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

如何让python -m build仅打包src布局下的目标包,排除额外文件夹?

解决src布局Python包构建时排除额外文件夹的问题

针对你用python -m build构建src布局Python包时,tar.gz归档包含不必要的datasets、model文件夹的问题,以下是几种可靠的解决方法:

方法1:使用MANIFEST.in(推荐,精准控制源归档内容)

python -m build生成的源码归档(tar.gz)会优先读取根目录的MANIFEST.in文件来确定包含/排除的内容,这是控制sdist内容最直接的方式:

  1. 在项目根目录创建MANIFEST.in文件,写入以下内容:
# 仅包含src目录下的目标包
include src/mypkg/**/*
# 打包必要的元数据文件
include pyproject.toml setup.cfg setup.py README.md LICENSE
# 排除指定的冗余文件夹
prune datasets/
prune model/
# 可添加其他需要排除的路径,比如:
# prune logs/
# exclude *.pyc
  1. 执行python -m build --sdist重新构建,解压生成的tar.gz即可验证效果。

方法2:调整setup.cfg的sdist专属配置

如果偏好通过setup.cfg配置,需在sdist段直接指定排除规则(之前的exclude配置可能未关联到sdist打包流程):
在setup.cfg中添加或修改:

[sdist]
exclude = datasets/ model/

[options]
packages = find:
package_dir =
    = src

此配置会直接告诉setuptools在生成sdist时跳过指定的根目录文件夹。

方法3:升级setuptools版本

旧版本的setuptools对src布局和exclude规则的支持存在bug,确保pyproject.toml中指定的build依赖为最新版:

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

61.0及以上版本的setuptools对src布局的打包逻辑更稳定,能正确识别排除规则。

验证步骤

执行python -m build --sdist --outdir ./temp_build,在temp_build目录下解压生成的.tar.gz文件,检查是否仅包含src/mypkg和元数据文件(pyproject.toml、setup.cfg等),无冗余文件夹。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 06:15:13