Setuptools技术咨询:能否用pyproject.toml替代Manifest.in文件?
关于Setuptools用pyproject.toml替代Manifest.in的问题
是的,Setuptools支持通过pyproject.toml中的配置替代Manifest.in,来指定sdist分发包需要包含的文件。
具体配置方式
1. 自定义sdist文件集合
在pyproject.toml中添加[tool.setuptools.sdist]区块,通过include和exclude字段精确控制文件:
[tool.setuptools.sdist] # 包含指定文件/目录,支持通配符 include = [ "docs/*.md", "examples/**/*.py", "LICENSE", "README.rst" ] # 排除指定文件/目录,优先级高于include exclude = [ ".gitignore", "tests/**/*", "*.pyc", "__pycache__/" ]
2. 自动包含包内资源文件
如果需要自动包含Python包目录下的非代码资源文件(如配置文件、静态资源),可以在[tool.setuptools]区块开启自动包含:
[tool.setuptools] include-package-data = true
开启后,Setuptools会自动识别包内符合规则的资源文件,无需手动逐个声明。
注意事项
- 该特性要求Setuptools版本≥61.0.0,使用前请确认环境依赖版本
- 通配符遵循Python
pathlib的匹配规则,**用于递归匹配子目录下的所有文件 - 若同时存在
pyproject.toml的sdist配置和Manifest.in,两者规则会被合并,但exclude规则优先级更高;完全替代的话直接删除Manifest.in即可
内容的提问来源于stack exchange,提问作者Spitfire19
相关产品推荐
相关产品推荐

