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

添加src/__init__.py后VSCode中PyTest测试收集失败求助

解决VSCode中PyTest导入路径错误问题

问题情况

你的目录结构:

  • conftest.py(空文件)
  • src
    • __init__.py(包含从main.py导入的important_function)
    • main.py
  • test
    • __init__.py(空文件)
    • test_main.py

添加src/__init__.py后,PyTest运行报错:

ImportError: cannot import name 'important_function' from '__init__' (/Users/ynusinovich/.vscode/extensions/ms-python.python-2022.20.1/pythonFiles/testing_tools/__init__.py)

核心问题是Python优先找到了VSCode扩展目录下的__init__.py,而非你项目src目录里的文件。

解决方法

1. 修正导入语句

不要直接写from __init__ import important_function,改成从src模块明确导入:

from src import important_function

如果important_function实际定义在main.py里,更精准的写法是:

from src.main import important_function

2. 配置项目Python路径

在项目根目录创建.env文件,添加以下内容:

PYTHONPATH=${PYTHONPATH}:./

这会把项目根目录加入Python模块搜索路径,让系统优先加载你项目内的src模块。

3. 配置VSCode工作区设置

打开项目的.vscode/settings.json,添加以下配置:

{
  "python.analysis.extraPaths": ["./src"],
  "python.testing.pytestArgs": ["."]
}

python.analysis.extraPaths让VSCode的代码分析工具识别src目录,pytestArgs指定从项目根目录启动测试。

4. 修改conftest.py

在项目根目录的conftest.py中添加路径配置:

import sys
from pathlib import Path

# 将src目录加入Python搜索路径
sys.path.append(str(Path(__file__).parent / "src"))

这样pytest启动时会自动把src目录加入路径,确保能找到你的自定义模块。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:20:56