PyCharm运行Pytest正常,命令行执行报错No module named 'src'如何解决?
问题:终端运行Pytest时出现
ModuleNotFoundError: No module named 'src',PyCharm中可正常执行 原因
PyCharm会自动将项目根目录(project_name)添加到Python的模块搜索路径(sys.path)中,所以能正确识别src模块。但终端直接运行pytest时,Python的模块查找规则是基于当前执行命令的工作目录:
- 如果终端工作目录是
project_name/src/tests,sys.path里只有该目录,找不到上层的src; - 即使在
project_name目录下运行pytest,默认情况下pytest的启动方式可能未将当前目录正确加入sys.path,导致无法识别src作为顶层模块。
解决方法
方法1:用Python模块模式运行pytest(推荐快速解决)
在**项目根目录(project_name)**下执行以下命令:
python -m pytest src/tests/api_tests.py
用python -m运行pytest时,Python会自动将当前工作目录加入sys.path,这样就能找到src模块。
方法2:临时设置PYTHONPATH环境变量
在终端中先把项目根目录加入PYTHONPATH,再运行pytest:
- Linux/macOS:
export PYTHONPATH=/absolute/path/to/project_name:$PYTHONPATH pytest src/tests/api_tests.py - Windows(CMD):
set PYTHONPATH=C:\absolute\path\to\project_name;%PYTHONPATH% pytest src/tests/api_tests.py - Windows(PowerShell):
$env:PYTHONPATH = "C:\absolute\path\to\project_name;$env:PYTHONPATH" pytest src/tests/api_tests.py
注意替换成你实际的项目根目录路径,这种设置仅在当前终端会话生效。
方法3:将src设为可安装包(适合长期维护的项目)
在project_name目录下创建pyproject.toml文件,内容如下:
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] name = "your-project-name" version = "0.1.0" packages = ["src"]
然后在项目根目录执行:
pip install -e .
这会把src安装为可编辑模式的Python包,之后无论在哪个目录运行测试,都能正常导入src下的模块。
内容的提问来源于stack exchange,提问作者falukky
相关产品推荐
相关产品推荐

