如何在pyproject.toml中筛选Python包构建所需文件?
解决Python包构建时包含不必要文件的问题
问题分析
你使用python -m build构建包时,.gitignore和.github目录被错误纳入源码包(tar.gz),原因是setuptools默认会扫描项目根目录下的多数文件,若未明确排除,这类辅助文件会被自动加入构建产物。
解决方案
方案1:用MANIFEST.in精确管控文件
在项目根目录创建MANIFEST.in文件,写入以下内容:
# 保留必要的根目录文件 include LICENSE README.rst # 包含mypkg包下所有Python文件 recursive-include mypkg *.py # 排除不需要的文件和目录 exclude .gitignore prune .github
方案2:修改pyproject.toml添加排除规则
直接在现有pyproject.toml中追加全局排除配置,无需额外创建文件:
[build-system] requires = [ "setuptools >= 65.5.1", "setuptools-scm", "wheel" ] build-backend = "setuptools.build_meta" [tool.setuptools.package-data] "*" = [ "README.rst", "LICENSE" ] [tool.setuptools.packages.find] include = [ "mypkg.*" ] # 新增排除规则 [tool.setuptools] exclude = [".gitignore", ".github/**"]
验证效果
执行清理构建命令,确保生成的包仅包含必要文件:
python -m build --clean
解压dist目录下的mypkg-0.0.0.tar.gz,即可看到.gitignore和.github已被移除,SOURCES.txt内容也会符合预期。
内容的提问来源于stack exchange,提问作者Maciek
相关产品推荐
相关产品推荐

