我评论了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 Test.foo as foo
(as foo
是为了让您可以在 main
中调用 foo.bar
。)
您还必须在 PYTHONPATH 中列出 ~/Development
。
如果使用 Unix 并且您的登录 shell 是 bash,将 ~/Development
添加到 PYTHONPATH
编辑 ~/.profile 以包含
export PYTHONPATH=$PYTHONPATH:$HOME/Development
进一步的调试建议:
地点
import sys
print(sys.path)
import Test
print(Test)
import Test.foo
在 test_foo.py
的顶部。请发布输出。
关于python - 对 python 导入感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18301580/