【问题标题】:Getting different ModuleNotFound errors for running tests vs running program from command line为运行测试和从命令行运行程序获取不同的 ModuleNotFound 错误
【发布时间】:2020-05-20 21:24:16
【问题描述】:

我已经用下面的确切树创建了一个项目。

/ project
   / logic
     - app.py
     - utils.py
     - exceptions.py
   / tests
     - tests.py
   - README
   - requirements.txt

代码旨在从命令行运行。 app.py 包含 ma​​in 逻辑。

app.py 中,我像这样导入实用程序: from utils import validate_args

所以当我运行python app.py 时,一切都按预期运行。

但是当我运行 nosetests 时,它立即失败,原因是 utilsapp.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!

标签: python import main nose


【解决方案1】:

我通过运行带有 -m 标志的程序解决了这个问题...... d'oh!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-07
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    • 1970-01-01
    • 2016-11-11
    相关资源
    最近更新 更多