从命令行获取相对于运行程序的运行测试与运行程序不同的ModuleNotFound错误

问题描述 投票:0回答:1

我用下面的确切树制作了一个项目。

/ 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目录中,但无济于事-但说实话,我只是在猜测。我对导入逻辑缺少什么?

python import main nose
1个回答
0
投票

我通过使用-m标志运行程序来解决此问题... d'oh!

© www.soinside.com 2019 - 2024. All rights reserved.