【发布时间】:2020-05-20 21:24:16
【问题描述】:
我已经用下面的确切树创建了一个项目。
/ project
/ logic
- app.py
- utils.py
- exceptions.py
/ tests
- tests.py
- README
- requirements.txt
代码旨在从命令行运行。 app.py 包含 main 逻辑。
在app.py 中,我像这样导入实用程序:
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 目录中,但无济于事——但老实说,我只是在猜测。关于导入逻辑,我缺少什么?
【问题讨论】:
-
在测试文件中,在导入逻辑文件前添加一行,import path sys.append.path(path).
-
要从 cmd 运行测试,请将目录更改为测试
-
谢谢@DharmveerSingh,不幸的是这些都不适合我——我遇到了同样的错误。
-
你想从 cmd 运行哪个文件
-
我通过运行带有
-m标志的程序来解决这个问题... d'oh!