You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

遵循pytest官方指南时跨文件夹导入模块失败求助

问题根源

  1. 项目采用src布局,但运行pytest时Python的模块搜索路径(sys.path)未包含src目录,导致无法找到example_package_VCMota包。
  2. 相对导入语法(from ..src.example import add_one)仅适用于包内部的模块引用,而tests目录未被Python识别为包的一部分,因此无法通过相对路径定位到src下的模块。

解决方案(针对第一个项目)

方法1:开发模式安装包(推荐)

在项目根目录执行以下命令,将包以开发模式安装到当前环境,Python会自动识别包路径:

pip install -e .

修改tests/test_example.py的导入语句为:

from example_package_VCMota.example import add_one

之后直接运行pytest即可正常执行测试。

方法2:配置pytest的Python路径

在项目根目录的pyproject.toml中添加以下配置,让pytest自动将src目录加入模块搜索路径:

[tool.pytest.ini_options]
pythonpath = ["src"]

修改tests/test_example.py的导入语句为:

from example_package_VCMota.example import add_one

运行pytest即可生效。


简化结构的导入问题解决

直接运行python test_example.py报错,是因为脚本运行时Python无法识别tests的父目录为项目根目录,相对导入失效。可通过以下两种方式解决:

方法1:手动添加路径到sys.path

在tests/test_example.py开头添加代码,将项目根目录加入模块搜索路径:

import sys
from pathlib import Path

# 获取项目根目录(tests的父目录)并加入sys.path
sys.path.append(str(Path(__file__).parent.parent))

from src.example import add_one

之后无论是运行python test_example.py还是pytest都能正常导入。

方法2:通过pytest运行并设置路径

在项目根目录运行pytest时,通过参数临时添加src到路径:

pytest --pythonpath=src

测试文件中使用绝对导入:

from src.example import add_one

内容的提问来源于stack exchange,提问作者boblacerda

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 00:10:34