在level1/level2/bar.py
中,当您尝试从foo
导入变量level1/foo.py
时,我收到错误消息:
ImportError: No module named level1.foo
别1 / foo.py
bar = 123
1级/ 2级别/ bar.py
import level1.foo
print level1.foo.bar
但是,当运行nosetests
中定义的level1/level2/test_bar.py
时,它可以找到level1.foo.py
!
1级/ 2级别/ test_bar.py
import level1.foo
def test_foobar():
print level1.foo.bar
为什么可以在鼻子测试期间通过level1.foo
导入,但是不能使用常规python脚本进行导入?
这是文件结构,每个目录中也有__init__.py
个文件。
另外,我的朋友使用PyCharm似乎没有遇到这样的问题。 PyCharm是否会自动处理这些导入,但除非将项目的根添加到PYTHONPATH
,否则会在PyCharm之外中断?
答案 0 :(得分:1)
这听起来像PYTHONPATH问题。如果您正在运行app
目录中的nosetests,则可以使用level1.foo导入。如果您从level1/level2/bar.py
目录运行apps/level1/level2
,则level1.foo不会(必然)在您的路径中。