2013-02-25 166 views
1

我已经用Eclipse在Python中编写了一个小脚本,并且它在从Eclipse执行时运行。从命令行执行python脚本:导入时出错

>python test.py argument1 argument2 
from src import Tests, ImportError: No module named src 

脚本存储与下列文件夹:

ScriptFolder 
.input 
.report 
.src 
..test.py 
..Tests 
...Test1.py 
...Test2.py 
..TestUtils 
...FileUtils.py 

这是我做的test.py进口的方式:不过,这并不在命令行工作

from src import Tests 
from TestUtils import FileUtils 

关于初始化 .py文件中,一个与test.py为空共享文件夹,以及一个到测试文件夹中有这样的内容:

import Test1 
import Test2 

而且初始化 .py文件到TestUtils有这样的内容:

import FileUtils 

的问题是,如果我改变行from src import Tests只是import Tests我在Eclipse中收到错误:Unresolved imports: Tests. found at src.Tests

我该如何使它适用于Eclipse和命令行?

回答

3

sys.path.append(path_to_src_directory)

这将添加到默认路径,其中蟒蛇查找模块的路径。 由于目前您的src目录的路径并不为python所知,因此会给出No module named src错误。 此外,您的src目录似乎没有__init__.py文件。

+0

我不明白为什么我需要将__init__.py文件放入根文件夹。无论如何,我也导入TestConstants.py,它是根文件夹,并工作。我从TestUtils中导入FileUtils.py,并运行。但是不可能导入测试。为什么python知道在哪里查找这些文件而不是测试文件?我怎样才能使用sys.path.append调用?我想绝对路径不会是一个好的实践,所以我怎样才能以相对的方式使用它? – 2013-02-25 08:57:34

+0

“我不明白为什么我需要'__init __。py'”......“为什么Python知道在哪里查找这些文件而不是测试文件”第二个问题是第一个问题的答案。 – 2013-02-25 09:07:57

+0

@DanielRoseman但我明白它的目的是进入Tests文件夹,将每个py文件导入到该文件夹​​中,这样你就可以导入所有文件,只需导入'测试'。但我不明白它的目的为根文件。事实上,如果我编辑root的__init__.py文件并写入导入测试,问题仍然存在 – 2013-02-25 09:15:56