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

如何优化Python包结构?消除导入时的src前缀冗余

解决方案

是否必须保留src目录?

不是必须,但推荐保留——这是Python社区认可的专业包结构,能清晰区分源码与非源码资源(notebooks、data等),团队协作时更易维护。如果觉得src前缀繁琐,有两种优化方向:


方法一:本地开发时移除src前缀(快速生效)

1. 临时给notebook添加路径

在notebook开头加入以下代码,将src目录加入Python模块搜索路径:

import sys
sys.path.insert(0, '../src')

之后即可直接导入目标对象:

from subpck1.A import a
# 或者
import subpck1.A as A_obj

2. 全局设置环境变量(一劳永逸)

启动notebook前,设置PYTHONPATH环境变量,把src目录加入搜索路径:

  • Linux/macOS终端:
    export PYTHONPATH="${PYTHONPATH}:./src"
    jupyter notebook
    
  • Windows命令行:
    set PYTHONPATH=./src
    jupyter notebook
    

设置后,所有notebook无需额外修改路径,直接导入子包即可。


方法二:重构为标准包结构(专业长期方案)

如果要给同事分享,建议调整为PyPI标准包格式,彻底消除src前缀:

1. 调整目录结构

把src目录重命名为你的包名(比如mypackage),最终结构如下:

mypackage-repo/
    data/
    notebooks/
        notebook1.ipynb
    mypackage/
        __init__.py
        subpck1/
            __init__.py
            A.py
            B.py
        subpck2/
            __init__.py
            C.py
            D.py
    pyproject.toml  # 项目配置文件

2. 优化包导出

在mypackage/__init__.py中直接导出常用对象,让使用者无需深入子包层级:

# mypackage/__init__.py
from .subpck1.A import a
from .subpck1.B import b  # 按需导出B中的对象
from .subpck2.C import c

3. 添加项目配置文件

创建pyproject.toml,让包可以通过pip安装(本地开发用可编辑模式):

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

[project]
name = "mypackage"
version = "0.1.0"
packages = ["mypackage"]

4. 安装包(本地开发)

在仓库根目录运行:

pip install -e .

之后同事在notebook中就能直接导入:

from mypackage import a
# 或者深入子包导入
from mypackage.subpck2 import C

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:10:18