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

Python如何不使用sys.path实现跨目录导入自定义模块

Python跨目录导入模块规范解决方案

报错的核心根源是两个:

  1. 直接执行test.py时,Python默认仅将test.py所在的notebooks目录加入模块搜索路径,无法识别上层的src目录
  2. 相对导入仅支持包内模块导入场景,直接将test.py作为顶层脚本执行时无法识别父级包结构

以下方案均无需修改sys.path,支持生产环境使用:

方案1:以模块模式运行脚本

保持test.py内导入语句为:

from App.src import loss

运行脚本时不要直接进入notebooks目录执行python test.py,而是回到App目录的上级目录,执行以下命令:

python -m App.notebooks.test

该命令会将当前执行目录自动加入Python的模块搜索路径,且将整个App作为顶层包加载,可正常识别目录结构。

方案2:将项目安装为第三方包(生产环境推荐)

在App目录的同级目录新建pyproject.toml配置文件,写入最基础的包配置:

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

[project]
name = "your-project-name"
version = "0.1.0"
packages = ["App", "App.src", "App.notebooks"]

之后在pyproject.toml所在目录执行命令:

# 本地开发用可编辑安装,修改代码后无需重新安装
pip install -e .
# 生产环境直接正常安装即可
pip install .

安装完成后,你可以在任意位置、任意脚本内直接使用from App.src import loss导入模块,无路径限制。

方案3:IDE开发场景配置

如果是本地用PyCharm、VSCode等IDE开发,可以直接将App目录标记为源根目录(Sources Root),IDE运行脚本时会自动将该目录加入模块搜索路径,直接运行test.py即可正常导入,无需调整运行命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 11:54:00