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

Python从相邻目录导入模块报ImportError,求无需改sys.path的解决方案

错误原因说明

  1. No module named 'sorting'报错:直接运行performance.py时,Python默认仅将脚本所在的src/benchmark目录加入模块搜索路径,sorting包存放在上一级的src目录下,不在运行时的搜索范围内。VS Code无lint报错是因为IDE静态检查时默认将项目根目录、src目录加入了搜索路径,和运行时的路径规则不互通。
  2. attempted relative import with no known parent package报错:直接运行单个py文件时,Python会将该文件识别为顶层脚本,__name__属性被设为__main__,不承认它属于src.benchmark子包,因此无法识别父包做相对导入。

解决方案(均无需手动修改sys.path)

方案1:修改VS Code运行配置(适配VS Code直接点运行的场景)

更新.vscode/launch.json的配置项,新增cwd和env配置:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal",
            "cwd": "${workspaceFolder}",
            "env": {"PYTHONPATH": "${workspaceFolder}/src"}
        }
    ]
}

配置完成后,在performance.py中直接使用from sorting.bubble_sort import bubble_sort即可正常运行。

方案2:以模块方式运行脚本(适配命令行运行场景)

不需要修改任何配置,只要在**项目根目录(MyProject文件夹)**下执行以下命令即可:

python -m src.benchmark.performance

这种运行方式会自动将当前工作目录加入模块搜索路径,同时将performance.py识别为包内模块,绝对导入from sorting.bubble_sort import bubble_sort和相对导入from ..sorting.bubble_sort import bubble_sort都可正常生效。

方案3:安装项目为可编辑包(适配所有运行场景,长期开发推荐)

在项目根目录新建pyproject.toml文件,填写以下内容:

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

[project]
name = "my-sorting-project"
version = "0.1.0"
packages = ["src"]

之后在项目根目录执行安装命令:

pip install -e .

安装完成后,无论你用哪种方式运行performance.py,都可以直接用from sorting.bubble_sort import bubble_sort完成导入,无需额外调整路径配置。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 21:36:07