从命令行获取 运行 测试与 运行 程序的不同 ModuleNotFound 错误
Getting different ModuleNotFound errors for running tests vs running program from command line
我用下面的树做了一个项目。
/ 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
时,它立即失败,引用 app.py
中的 utils
的导入作为原因:
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 标志的程序解决了这个问题...哦!
我用下面的树做了一个项目。
/ 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
时,它立即失败,引用 app.py
中的 utils
的导入作为原因:
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 标志的程序解决了这个问题...哦!