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

如何打包无命名空间前缀导入的Python第三方项目且不改源码

解决方案:无需修改源码打包Python库并支持无前缀导入

可行,你可以通过新增一个自定义的__init__.py(仅新增文件,不修改原有项目源码),配合调整MANIFEST.in和pyproject.toml配置实现需求,具体步骤如下:

1. 新增__init__.py文件(项目根目录)

在项目根目录创建__init__.py,内容用于调整系统路径并注册顶层模块:

import sys
import os

# 将src目录添加到系统路径,解决内部模块导入问题
src_path = os.path.join(os.path.dirname(__file__), "src")
sys.path.append(src_path)

# 注册顶层模块,支持无前缀导入
from src import all, the, sources
sys.modules["all"] = all
sys.modules["the"] = the
sys.modules["sources"] = sources

2. 配置MANIFEST.in

确保所有需要打包的文件被包含:

graft src
include __init__.py

3. 修改pyproject.toml

更新包目录配置,将mypkg的根目录指向项目根目录:

[tool.setuptools]
packages = ["mypkg"]
package-dir = { mypkg = "." }
include-package-data = true

效果说明

  • 打包安装后,所有源码文件会被放在site-packages/mypkg/src/下,不会直接暴露在site-packages根目录,满足你的要求。
  • 既可以通过命名空间导入(import mypkg.src.all),也可以直接无前缀导入(import all)。
  • 原有源码中的from the import SomeThing会因为src目录被加入sys.path而正常执行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 13:15:21