如何通过setup.cfg为Python包配置数据文件,sdist构建缺失数据如何解决?
问题原因
你配置了include_package_data = True,该参数开启后setuptools会优先读取MANIFEST.in文件定义的非代码文件包含规则,直接忽略[options.package_data]下的配置,导致你指定的*.txt规则没有生效,hello.txt没有被打入发行包。
修复方案
你可以任选以下一种方案修改:
- 方案1:保留package_data配置,关闭include_package_data
删除[options]段中的include_package_data = True行即可,你原本写的[options.package_data] * = *.txt规则会正常生效,自动包含所有包目录下的txt文件。 - 方案2:保留include_package_data配置,新增MANIFEST.in规则
在项目根目录新建MANIFEST.in文件,写入如下内容:
该规则会明确指定将my_package目录下的txt文件纳入发行包。include my_package/*.txt
修改完成后重新执行python -m build --sdist构建,即可在生成的源码包中看到hello.txt文件。
额外检查点
如果修改后仍然不生效,确认你的pyproject.toml中已经正确配置setuptools为构建后端,参考配置如下:
[build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta"
内容的提问来源于stack exchange,提问作者John Henckel
相关产品推荐
相关产品推荐

