python - Pytest "No module named..."问题

标签 python import module pytest importerror

因此,当我运行 pytest 与直接调用测试模块时,我遇到了问题。 Pytest 实际上运行良好,但我在尝试直接调用我正在测试的 python 文件时遇到了问题。这是基本的文件夹布局:

generate
├── generate
│   ├── __init__.py
│   ├── write_sql.py
│   └── utils.py
└── tests
    └── test_write_sql.py

test_write_sql.pywrite_sql.py 中,我使用 generate 模块导入内容,如下所示:

from generate import utils

从根generate文件夹运行pytest工作正常。但是,当我尝试直接从根 generate 文件夹调用 write_sql.py 时,我遇到了以下错误:

root@637572f508b9:~/generate# python3 generate/write_sql.py 
Traceback (most recent call last):
  File "/root/generate/generate/write_sql.py", line 5, in <module>
    from generate import utils
ModuleNotFoundError: No module named 'generate'

我的印象是,从 generate 根文件夹运行 Python 应该将 generate 子文件夹作为模块添加到系统路径中(由于包含 __init__. py 文件)。我知道如果我将 import 更改为 write_sql.py 中的 import utils ,那么直接调用 write_sql.py 就可以了,但是 pytest 会遇到 import错误。

关于我应该使用什么导入方案来使 pytest 和直接调用工作有什么想法吗?

最佳答案

我在导入方面遇到了同样的问题,我修复它的方法是设置所有导入以便代码运行。为了运行测试而不是仅仅调用 pytest (这会从它们所在的文件夹运行所有测试,因此会出现导入错误),应该从根目录调用它,如下所示:

python3 -m pytest

python -m pytest

这样它就可以从根目录运行所有测试,并且不会出现导入错误

关于python - Pytest "No module named..."问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72564730/

相关文章:

javascript - 尽管导出,Angular 仍无法识别导入模块中的组件

python - Python 模块和 Python 包有什么区别?

python - 有没有办法使用 'pattern' 来分解字符串

python - 无法从 iOS 上的服务器获取 FCM 推送通知(适用于 Android)

python - 删除 python 循环导入

java - 网上平台根据方法搜索java包名

python - Bokeh 服务器 - 在回调返回之前强制刷新客户端图形?

python - 由于 python 将主机读取为元组,尝试进行套接字时出现类型错误

python - 如何在开发机器上强制 ImportError? (密码模块)

linux - 从内核模块读取 dmesg