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

如何调试开发中的Python包 解决test.py运行时相对导入报错问题

报错原因

你遇到的报错本质是:直接用python test.py运行单个脚本时,Python会将test.py所在的目录设为执行上下文根目录,且该脚本会被识别为__main__顶层模块,不被视作任何包的组成部分,因此不支持相对导入语法(带.的导入语句)。除此之外你写的相对导入路径也和实际文件结构不匹配,你的module.py存放在PackageName目录下,不存在src层级,就算相对导入生效也会找不到目标模块。

标准开发调试方案

方案1:可编辑安装(最推荐,Python包开发标准实践)

这个方案可以让你直接导入本地正在开发的包代码,修改后无需重新安装即可生效,完全不需要修改导入逻辑和系统路径:

  • 首先确保你的项目根目录(即MyPackage文件夹,内部包含PackageName子文件夹)下有包配置文件,最简单的可以新建pyproject.toml,写入基础配置:
[build-system]
requires = ["setuptools>=61.0"]
build-backend = "setuptools.build_meta"

[project]
name = "PackageName"
version = "0.1.0"
packages = ["PackageName"]
  • 在MyPackage根目录下打开终端,执行命令:
    pip install -e .
  • 此时你就可以在test.py中直接写绝对导入语句:
    from PackageName.module import SomeClass
  • 直接运行python test.py即可调用本地最新的代码,不会用到系统中已安装的旧版本。

方案2:临时修改Python路径(无需修改配置,适合临时调试)

如果不想安装包,也可以通过将项目根目录临时加入Python导入搜索路径解决:

运行时指定路径

  • Linux/macOS 终端执行:
    PYTHONPATH=. python test.py
  • Windows CMD 执行:
    set PYTHONPATH=. && python test.py
  • Windows PowerShell 执行:
    $env:PYTHONPATH="."; python test.py

代码内修改路径

也可以在test.py的最开头加入以下代码,自动添加上下文路径:

import sys
from pathlib import Path
sys.path.insert(0, str(Path(__file__).parent.resolve()))

修改完成后直接运行python test.py即可正常导入。

方案3:标准化测试架构(适合长期维护的项目)

如果是长期维护的Python包,建议调整为行业通用的项目结构,配合测试框架使用:

  • 调整后结构参考:
MyPackage/
├── pyproject.toml
├── src/
│   └── PackageName/
│       ├── __init__.py
│       └── module.py
└── tests/
    └── test_module.py
  • 安装测试框架pytest:pip install pytest
  • 完成可编辑安装后,直接在MyPackage根目录执行pytest命令,框架会自动发现所有测试文件并执行,不需要手动处理导入路径问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 01:36:03