【发布时间】:2013-08-20 12:41:06
【问题描述】:
我查看了the Python 2.7.5 documentation。我的真实项目有问题,但在这里创建了一个小型测试项目来简洁地重现该问题。想象一个存储在 ~/Development/Test 中的具有以下布局的包
结构如下:
Test/
__init__.py
foo.py
sub/
__init__.py
test_foo.py
并且代码(__init__.py 文件是空的):
foo.py
def bar():
print("hello world")
test_foo.py
import Test.foo
# also tried from Test import foo
def main():
foo.bar()
if __name__ == "__main__":
main()
当尝试从终端运行test_foo.py(即python test_foo.py)时,我得到:
Traceback (most recent call last):
File "test_foo.py", line 1, in <module>
import Test.foo
ImportError: No module named Test.foo
我正在尝试从子模块的测试文件中导入包中的主文件(foo.py)(在我的实际项目中,子模块是单元测试代码)。奇怪的是使用Sublime text 2 编辑器和插件python test runner,我可以很好地运行我的个人测试,但我无法构建测试文件。它给了我上述错误。
【问题讨论】:
-
您的错误信息中有一个错字:
import foo,您的文件代码状态为import test.foo -
@kroolik,那是个错误,应该说:Test.foo,我已经修好了。
-
您不应该创建和运行放置在模块中的脚本。脚本应始终位于模块之外。
-
@ViktorKerkez,不知道你为什么说“脚本”,但我想将单元测试放在模块之外确实有意义。我习惯于在 C# 中构建事物。我将包视为项目的“解决方案”(在本例中是主包和用于测试的子包)。
标签: python linux package importerror