pytest导入模式与conftest.py配置问题:项目模块导入失败
解决pytest中ModuleNotFoundError找不到项目模块的问题
问题根源
你的test_helpers/utils.py在导入项目模块some.package.of.ours时,Python的sys.path未包含项目根目录,导致无法定位该模块。即便设置了--import-mode=importlib,pytest也没有自动将项目根目录加入模块搜索路径。
解决方案
方案1:在pyproject.toml中配置Python路径
直接在pyproject.toml的pytest配置区块添加pythonpath,让pytest启动时自动把项目根目录加入搜索路径:
[tool.pytest.ini_options] import_mode = "importlib" pythonpath = ["."]
.代表执行poetry run pytest时的当前目录(即项目根目录),配置后utils.py里的常规导入就能正常找到项目模块。
方案2:在conftest.py中手动添加项目根目录到sys.path
如果不想修改配置文件,可在tests/conftest.py开头添加代码,动态把项目根目录加入Python模块搜索路径:
import sys from pathlib import Path # 假设tests目录与项目根目录同级,可根据实际目录结构调整路径 project_root = Path(__file__).parent.parent sys.path.append(str(project_root))
这段代码会自动识别项目根目录并添加到sys.path,确保utils.py能导入项目模块。
方案3:以可编辑模式安装项目包
利用poetry将项目包以可编辑模式安装到虚拟环境,让Python全局可识别项目模块:
poetry add --editable .
执行后poetry会将项目包链接到虚拟环境,任何位置的导入都能找到some.package.of.ours。
内容的提问来源于stack exchange,提问作者bmargulies
相关产品推荐
相关产品推荐

