pytest测试报错ModuleNotFoundError: No module named 'prompts'求助
解决方案
1. 对齐项目结构与导入逻辑
先确认项目核心结构如下(确保src被标记为Python包):
项目根目录/ ├── src/ │ ├── __init__.py # 空文件即可,用于标记src为Python包 │ ├── main.py │ ├── csv_methods.py │ └── prompts.py ├── tests/ │ ├── test_xxx.py └── Pipfile
测试文件里的导入必须以src作为包前缀,示例:
from src.csv_methods import your_target_function
2. 用PYTHONPATH指定模块搜索路径
在项目根目录(而非src目录)执行以下命令:
# 先激活pipenv虚拟环境 pipenv shell # 将当前目录加入Python模块搜索路径,再运行pytest PYTHONPATH=. pytest
这条命令会让Python把项目根目录纳入模块搜索范围,既可以识别src包,也能让csv_methods.py里的from prompts import *正常找到同目录下的prompts.py。
3. 用pytest配置文件省去重复设置
在项目根目录创建pytest.ini文件,写入以下内容:
[pytest] pythonpath = .
之后直接在项目根目录执行pytest即可,pytest会自动加载该配置,无需每次手动设置PYTHONPATH。
4. 确保pytest在pipenv环境内运行
检查当前pytest是否属于pipenv虚拟环境:
which pytest
如果输出路径不在pipenv的venv目录下,重新激活虚拟环境并安装pytest:
pipenv shell pip install pytest
5. 改用相对导入(可选)
若上述方法仍有问题,可修改csv_methods.py里的导入语句为相对导入:
# 替换原有的from prompts import * from .prompts import *
这种写法更符合Python包的规范,能避免跨目录的路径识别问题。
内容的提问来源于stack exchange,提问作者Luca
相关产品推荐
相关产品推荐

