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

2024-07-03 06:31:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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

>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语句:

^{pr2}$

前两个import语句工作正常,但后两个语句给出了错误ImportError: No module named test1和{}。我看不出tests和modules目录之间有什么不同。在

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


Tags: 项目pyimport目录modulesinit方式tests
2条回答

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

通常的解决方案是将脚本放在模块层次结构中的某个位置,然后用python -m path.to.module来“运行”它们。但是在本例中,您可以使用现有的测试运行程序:Python附带python -m unittest discover,或者您可能会喜欢一些更花哨的东西,比如^{pip install user pytest)。在

问题是python不喜欢文件夹名测试。将名称改为unit_tests解决了这个问题。在

相关问题 更多 >