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

如何通过pyproject.toml选择主包内特定子包并包含主包__init__.py

解决setuptools构建时包含主包__init__.py并指定子包的问题

问题原因

你之前的配置里,include只写了subpkg1、subpkg2,setuptools会把这些当成顶级包去查找,而非mypkg下的子包;同时主包mypkg本身没被加入include列表,所以它的__init__.py不会被打包进产物。

解决方案一:明确包含主包和目标子包

修改pyproject.toml的include配置,把主包mypkg以及需要的子包(带完整层级路径)加进去:

[tool.setuptools.packages.find]
include = [
    "mypkg",
    "mypkg.subpkg1",
    "mypkg.subpkg2",
]
namespaces = false

这样setuptools会同时包含主包mypkg(含它的__init__.py)和指定的两个子包,其他子包会被自动排除。

解决方案二:用exclude排除不需要的子包

如果需要保留的子包数量多、不需要的少,这种方式更高效:先包含整个主包,再排除不需要的子包:

[tool.setuptools.packages.find]
include = ["mypkg"]
exclude = [
    "mypkg.subpkg3",
    "mypkg.subpkg4",
    # 列出所有不需要打包的子包
]
namespaces = false

验证方式

执行构建命令后,可查看build/lib目录或dist下的wheel包,确认mypkg/__init__.py和指定子包都已被包含。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:50:50