我有一个项目目录,按以下方式设置:
>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 test1
和ImportError: No module named test2
。我无法看到测试和模块目录之间的区别。
我很乐意根据需要提供更多信息。
答案 0 :(得分:0)
当您运行脚本时,Python会将包含脚本的目录(此处为scripts/
)添加到sys.path
。如果您的模块没有以任何其他方式出现在sys.path
中,那么这意味着Python可能根本无法找到它们。
通常的解决方案是将您的脚本放在模块层次结构中的某个位置,并使用python -m path.to.module
“运行”它们。但在这种情况下,您可以使用现有的测试运行器:Python附带python -m unittest discover
,或者您可能会欣赏py.test(pip install --user pytest
)之类的更多内容。
答案 1 :(得分:0)
问题原来是python不喜欢文件夹名称测试。将名称更改为unit_tests解决了问题。