使用pytest运行测试时遭遇Python模块导入问题求助
解决pytest运行时
ModuleNotFoundError: No module named 'datastore'的问题 核心原因
PyCharm会自动将项目根目录加入Python的PYTHONPATH,但终端运行pytest时不会默认做这件事,导致Python无法识别你的自定义包(datastore、services)。
解决方案
方法1:临时设置PYTHONPATH(快速验证)
进入项目根目录(即包含datastore、services、tests的文件夹),执行对应命令:
# macOS/Linux export PYTHONPATH="$PWD" && python -m pytest # Windows CMD set PYTHONPATH=%cd% && python -m pytest # Windows PowerShell $env:PYTHONPATH = (Get-Location).Path; python -m pytest
方法2:用conftest.py自动配置路径
在项目根目录创建conftest.py文件,内容如下:
import sys from pathlib import Path # 将项目根目录添加到Python路径 sys.path.append(str(Path(__file__).parent))
之后直接运行python -m pytest即可,pytest会自动加载该文件并完成路径配置。
方法3:将项目安装为可编辑包(推荐长期方案)
- 在项目根目录创建
setup.py文件:
from setuptools import setup, find_packages setup( name="jr101425", version="0.1.0", packages=find_packages(exclude=["tests"]), )
- 激活venv后执行安装命令:
pip install -e .
完成后你的自定义包会被Python识别为全局可导入包,无论在哪个目录运行测试或代码都不会出现导入问题。
额外注意事项
确保datastore、datastore/models、services、tests目录下都存在空的__init__.py文件(Python 3.3+支持无__init__.py的命名空间包,但显式添加可避免兼容性问题)。
内容的提问来源于stack exchange,提问作者Dasun Pubudumal
相关产品推荐
相关产品推荐

