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

命令行python -m pytest可运行,VS Code测试标签报ModuleNotFoundError

命令行pytest正常但VS Code测试标签报错的原因与解决方法

问题本质

当你在my_project目录下执行python -m pytest时,Python会自动将**当前工作目录(即my_project)**添加到sys.path(Python的模块搜索路径),因此src作为顶层包能被测试文件正常导入。但VS Code的pytest测试适配器默认执行环境没有将my_project目录加入sys.path,或者启动路径不是my_project,导致测试代码找不到src模块。

可行解决方案

方案1:配置VS Code的pytest工作目录

修改.vscode/settings.json,强制pytest从my_project目录启动,和命令行环境保持一致:

{
  "python.testing.pytestArgs": ["test"],
  "python.testing.unittestEnabled": false,
  "python.testing.pytestEnabled": true,
  "python.testing.cwd": "${workspaceFolder}"
}

${workspaceFolder}指代你在VS Code中打开的my_project目录,设置后测试适配器会以该目录为工作路径运行pytest。

方案2:手动添加路径到测试文件(临时方案)

在每个测试文件的开头添加代码,将my_project目录加入Python的搜索路径:

import sys
from pathlib import Path

# 向上回溯三级目录,找到my_project的绝对路径
sys.path.append(str(Path(__file__).resolve().parent.parent.parent))

from src.models.myModel import myModel

这种方式无需修改配置,但代码侵入性强,仅适合临时调试。

方案3:将src安装为可编辑包(推荐长期方案)

在my_project目录下创建pyproject.toml文件,定义项目的包结构:

[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "my_project"
version = "0.1.0"
packages = ["src"]

然后在my_project目录下执行以下命令,将包安装为可编辑模式:

pip install -e .

这样src会被Python识别为全局可导入的包,无论从哪个路径运行测试都能正常导入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 03:32:40