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

setuptools_scm将已提交.gitignore纳入sdist包,如何免MANIFEST.in排除?

问题解答

1. [tool.setuptools.exclude-package-data]的作用及替代MANIFEST.in的可行性

  • 这个配置仅针对Python包目录内的文件生效,作用是排除项目包(比如your_project/目录下)中不需要打包进wheel或sdist的资源文件。
  • 它完全无法处理项目根目录的文件(比如根目录的.gitignore),所以想用它排除根目录文件属于配置项误用,无法替代MANIFEST.in完成该操作。

2. 配置误用分析及根目录文件排除方案

  • 你猜测的没错,[tool.setuptools.exclude-package-data]里的*指代的是你的项目包目录,而非项目根目录,所以这个配置根本不会处理根目录的.gitignore。
  • 要排除sdist包根目录的.gitignore等文件,除了MANIFEST.in,还可以直接在pyproject.toml中配置setuptools的sdist排除规则:
    [tool.setuptools.sdist]
    exclude = [".gitignore"]
    
  • 关于setuptools_scm的影响:setuptools_scm会默认把Git仓库中已追踪的文件(包括.gitignore)自动加入sdist打包列表,需要同时配置setuptools_scm的排除规则,避免它强制纳入目标文件:
    [tool.setuptools_scm]
    exclude = [".gitignore"]
    

组合以上两项配置后,无需MANIFEST.in即可完成根目录.gitignore的排除。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 13:05:23