运行pytest出现相对导入路径错误:找不到名为'app'的模块问题咨询
pytest模块导入错误解决方案
错误的核心原因是Python默认没有将项目下的src目录纳入模块搜索路径,同时导入语句的前缀写法和包结构不匹配,可按以下任意一种方案解决:
- 方案1:新增conftest.py自动配置搜索路径
在project根目录下新建conftest.py文件,写入如下代码:
完成后统一调整导入语句:import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).parent / "src"))- 测试文件中的导入去掉
src前缀,修正为:from app.functions.functionA import funcA(注意原写法漏掉了functions的后缀s) functionA.py中的导入from app.db.dbA import client保持不变
配置完成后直接在project目录执行python -m pytest即可正常运行。
- 测试文件中的导入去掉
- 方案2:通过pyproject.toml配置全局规则
如果项目用pyproject.toml管理配置,添加如下配置项:
导入语句调整规则和方案1一致,无需额外配置即可运行pytest。[tool.pytest.ini_options] pythonpath = ["src"] [project] packages = ["app"] package_dir = {"": "src"} - 方案3:临时指定PYTHONPATH运行
不需要修改配置的场景,可在运行pytest时临时指定搜索路径:- Linux/macOS终端:
PYTHONPATH=./src python -m pytest - Windows cmd:
set PYTHONPATH=./src && python -m pytest - Windows PowerShell:
$env:PYTHONPATH="./src"; python -m pytest
- Linux/macOS终端:
内容的提问来源于stack exchange,提问作者ball
相关产品推荐
相关产品推荐

