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

测试目录在项目子目录时pytest无法找到模块的问题排查

问题分析与解决方法

错误原因

直接运行python src/main.py时,Python会自动把src目录(当前脚本所在目录)加入模块搜索路径,所以能找到同目录下的constants.py。但执行pytest时,是从项目根目录启动的,此时src是一个独立的Python包,constants属于src包的子模块,直接from constants import HELLO会找不到这个模块。

解决方案

推荐下面两种规范的解决方式:

1. 使用绝对导入(推荐)

修改src/main.py中的导入语句:

# 替换原来的 from constants import HELLO
from src.constants import HELLO

之后运行主脚本需要从项目根目录执行:

python -m src.main

这种方式符合Python包的导入规范,不管是pytest还是正常运行都能正确找到模块。

2. 使用相对导入

修改src/main.py中的导入语句为相对当前包的导入:

# 替换原来的 from constants import HELLO
from .constants import HELLO

同样,运行主脚本需要从项目根目录用模块方式启动:

python -m src.main

相对导入只适用于包内部的模块引用,更适合包结构复杂的项目。

可选临时方案(不推荐)

如果不想修改运行方式,可以在src/main.py开头添加代码,手动把src目录加入模块搜索路径:

import sys
import os
# 获取当前脚本所在的src目录路径
src_dir = os.path.dirname(os.path.abspath(__file__))
# 把src目录加入搜索路径最前面
sys.path.insert(0, src_dir)

这种方式虽然能解决问题,但会破坏Python的包导入规范,长期维护不建议使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 01:52:20