当使用setuptools的setup.py打包Python包时:
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中可见且可预测的规则使其表现得明智?