我用下面的确切树制作了一个项目。
/ project
/ logic
- app.py
- utils.py
- exceptions.py
/ tests
- tests.py
- README
- requirements.txt
该代码应从命令行运行。 app.py
包含main逻辑。
在app.py
内,我这样导入utils:from utils import validate_args
所以当我运行python app.py
时,一切都会按预期进行。
但是当我运行nosetests
时,它立即失败,并以utils
中的app.py
的导入为原因:
File ".../project/app.py", line 4, in <module>
ModuleNotFoundError: No module named 'utils'
可以通过将导入更改为.utils
来解决,但是命令行命令失败:
ModuleNotFoundError: No module named '__main__.utils'; '__main__' is not a package
我曾尝试以各种组合将__init__.py
文件添加到/project
,/logic
和/tests
目录中,但无济于事-但说实话,我只是在猜测。我对导入逻辑缺少什么?
我通过使用-m标志运行程序来解决此问题... d'oh!