为 Distutils 清单模板使用 MANIFEST.in 以外的名称

Use a name other than MANIFEST.in for Distutils manifest template

在 Python documentation for distribution 中,声明清单模板被 默认 命名为 MANIFEST.in。然后它似乎没有说明如何更改该默认值。

为了混合语言项目,我想命名 MANIFEST.in 更像 PYTHON-MANIFEST.in 或类似的东西,以避免需要知道什么属于的开发人员的精神负担什么语言(我们不能只将 Python 子项目放入子目录,因为它需要访问根目录下的伞式项目项)。

这可能吗?如果是,怎么做?

Distutils sdist 命令的命令行帮助有答案:

$ python3 ./setup.py sdist --help
[…]
Options for 'sdist' command:
  --template (-t)        name of manifest template file [default: MANIFEST.in]
[…]

因此您可以将“manifest template”文件命名为任何您喜欢的名称,然后 使用 template 选项指定模板文件名 for sdist.

我在Distutils文档中找不到答案,确实需要一些专门的改进和维护。

上面的答案让我有机会查看并找到以编程方式执行此操作的方法。

使用 setuptools 时,可以简单地重新分配用于查找清单模板的变量:

setuptools.command.egg_info.manifest_maker.template = 'your-manifest-template-here.in'

我想通过从 distutils.command.sdist.sdist 派生并更改 self.template 在覆盖的 finalize_options 中分配给的内容,纯 distutils 可能会发生类似的事情(并且此外,当然,将其指定为您的自定义 sdist 命令)。