当使用 setup.py 打包 Python 包时,使用 setuptools:
from setuptools import setup
...
由以下人员创建的源分发:
python setup.py sdist
不仅像往常一样包括在 MANIFEST.in 中指定的文件,而且还无偿地包括 Subversion 列出的所有文件,这些文件在包目录下被版本控制。这非常烦人。不仅难以对与我的包一起分发的文件进行任何形式的显式控制,而且这意味着当我按照“svn export”而不是“svn checkout”构建包时,我的内容包可能完全不同,因为没有 .svn 元数据 setuptools 将对包含的内容做出不同的选择。
我的问题:我如何才能关闭这种可怕的行为,以便“setuptools”以同样的方式对待我的项目,无论我使用的是 Subversion,还是从未听说过的版本控制,还是使用“svn export”创建的裸树,我'已经在我的项目结束时创建以确保它在我的工作目录之外的某个地方干净地构建?
到目前为止,我所管理的最好的是一个丑陋的猴子补丁:
from setuptools.command import sdist
del sdist.finders[:]
但这是 Python,而不是丛林,所以我当然想要一个完全不涉及猴子的更好的解决方案。我怎样才能驯服 setuptools,关闭它的魔力,并通过查看 MANIFEST.py 中可见的、可预测的规则来让它表现得明智?