我复习了the Python 2.7.5 documentation。我的真实项目有问题,但是在这里创建了一个小测试项目来简洁地再现这个问题。设想一个具有以下布局的包存储在~/development/test
结构如下:
Test/
__init__.py
foo.py
sub/
__init__.py
test_foo.py
代码(
__init__.py
文件是empy):食品
def bar():
print("hello world")
测试方法
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 Test.foo as foo
(使用
as foo
可以在foo.bar
中调用main
)您还必须在pythonpath中列出
~/Development
。如果使用unix并且您的登录shell是bash,则添加
~/Development
到PYTHONPATH
edit~/.profile以包括export PYTHONPATH=$PYTHONPATH:$HOME/Development
这里有instructions for Windows。
进一步调试建议:
地点
import sys
print(sys.path)
import Test
print(Test)
import Test.foo
在
test_foo.py
的顶部。请张贴输出。