首页 >后端开发 >Python教程 >如何修复 Pytest 中的'ImportError:没有名为...的模块”错误?

如何修复 Pytest 中的'ImportError:没有名为...的模块”错误?

Susan Sarandon
Susan Sarandon原创
2024-12-04 13:29:11759浏览

How Do I Fix

解决 ImportError: No Module Named Issue with Pytest

在使用 pytest 时遇到错误“ImportError: No module named...”,重要的是要考虑PATH 配置的潜在问题,尤其是在 Linux 或 Windows 系统上。在这种特定情况下,用户在 Mac 上使用 easy_install 安装了 pytest,并在测试具有以下文件结构的项目时遇到了问题:

repo/
   |--app.py
   |--settings.py
   |--models.py
   |--tests/
          |--test_app.py

要解决此问题,建议使用以下方法:

1。利用 'pythonpath' 配置 (Pytest >= 7)

Pytest 引入了一个核心插件,可以通过 'pythonpath' 配置设置启用 sys.path 修改。这个简化的解决方案涉及将以下行添加到项目的 pyproject.toml 或 pytest.ini 文件中:

# pyproject.toml
[tool.pytest.ini_options]
pythonpath = [
  "."
]

# pytest.ini
[pytest]
pythonpath = .

通过指定相对于根目录的路径条目,您可以有效地将该目录添加到 sys.path,解决导入问题。

2.实现“conftest”解决方案(Pytest

对于旧版本的 pytest,一种侵入性较小的方法是在项目的根目录中创建一个名为“conftest.py”的空文件:

$ touch repo/conftest.py

这样做,pytest 会自动将 'conftest.py' 的父目录添加到sys.path,实现成功导入。

说明:

Pytest 在测试收集期间搜索“conftest”模块以收集自定义挂钩和固定装置。为了导入这些自定义对象,pytest 将 'conftest.py' 的父目录添加到 sys.path。

结论:

推荐的解决方法pytest 中的导入问题取决于您使用的版本。对于 pytest >= 7,首选“pythonpath”配置,而对于 pytest

以上是如何修复 Pytest 中的'ImportError:没有名为...的模块”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn