Python导入从一个文件夹而不是另一个文件夹

时间:2014-06-04 21:50:11

标签: python python-import

我有一个项目目录,按以下方式设置:

>root
   > modules
       __init__.py
       module1.py
       > moduleClass
           __init__.py
           moduleClass1.py
           moduleClass2.py
   > scripts
       runTests.py
   > tests
       __init__.py
       test1.py
       test2.py
   run.sh

runTests.py中,我有以下导入语句:

import modules.module1
import modules.moduleClass.moduleClass2
import tests.test1
import tests.test2

前两个导入语句工作正常,但后两个导致错误ImportError: No module named test1ImportError: No module named test2。我无法看到测试和模块目录之间的区别。

我很乐意根据需要提供更多信息。

2 个答案:

答案 0 :(得分:0)

当您运行脚本时,Python会将包含脚本的目录(此处为scripts/)添加到sys.path。如果您的模块没有以任何其他方式出现在sys.path中,那么这意味着Python可能根本无法找到它们。

通常的解决方案是将您的脚本放在模块层次结构中的某个位置,并使用python -m path.to.module“运行”它们。但在这种情况下,您可以使用现有的测试运行器:Python附带python -m unittest discover,或者您可能会欣赏py.testpip install --user pytest)之类的更多内容。

答案 1 :(得分:0)

问题原来是python不喜欢文件夹名称测试。将名称更改为unit_tests解决了问题。