使用pytest导入函数时遇ModuleNotFoundError问题求助
解决pytest导入src模块的ModuleNotFoundError问题
针对你遇到的ModuleNotFoundError: No module named 'src'问题,有以下几种可行的解决思路:
方案1:运行pytest时临时添加项目根目录到Python路径
在项目根目录执行以下命令,将当前目录(项目根)加入Python的模块搜索路径:
PYTHONPATH=. pytest
这样Python就能找到src目录下的addsub模块,测试文件里的from src.addsub import add就能正常导入。
方案2:将项目以可编辑模式安装
这种方式更适合长期开发,执行以下命令(项目根目录下):
pip install -e .
该命令会把addsub包安装为可编辑模式(包文件会以链接形式关联到项目源码),之后你可以修改测试文件的导入语句,去掉src前缀:
from addsub import add
之后直接运行pytest即可,无需额外配置路径。
方案3:修改测试文件的导入方式(相对导入)
给tests目录添加__init__.py文件,将其变为Python包,然后修改测试文件的导入语句为相对导入:
from ..src.addsub import add
不过这种方式需要注意,运行pytest时要确保从项目根目录执行,且部分pytest版本对相对导入的支持可能有差异,不如前两种方案稳定。
补充说明
出现这个错误的核心原因是:当pytest加载tests/test_add.py时,Python的模块搜索路径(sys.path)默认会加入tests目录,但不会自动包含项目根目录,因此无法找到src目录下的模块。上述三种方案都是通过不同方式让Python能定位到src或addsub模块。
内容的提问来源于stack exchange,提问作者Robert Alexander
相关产品推荐
相关产品推荐

