将Python软件包与使用setuptools的setup.py打包时:

from setuptools import setup
...

由以下人员创建的源分发:
python setup.py sdist

不仅像往常一样包括MANIFEST.in中指定的文件,而且还无故包含在包目录下Subversion列出了受版本控制的所有文件。这很烦人。这不仅使您很难对通过程序包分发哪些文件进行任何显式控制,而且这意味着当我按照“svn导出”而不是“svn check out ”来构建程序包时,我的内容软件包可能会大不相同,因为如果没有.svn元数据,setuptools将对包含的内容做出不同的选择。

我的问题:如何关闭这种可怕的行为,以便无论我使用Subversion还是从未听说过的版本控制,还是使用“svn export”创建的裸树,“setuptools”都以相同的方式对待项目是在项目结束时创建的,以确保它可以在我的工作目录之外的其他地方清晰地构建?

到目前为止,我管理的最好的是一个丑陋的猴子补丁:
from setuptools.command import sdist
del sdist.finders[:]

但这是Python,而不是丛林,因此,我当然想要一个更好的解决方案,根本不涉及任何猴子。我该如何驯服setuptools,关闭它的魔力,并通过查看MANIFEST.py中可见的,可预测的规则来使其表现得明智一些?

最佳答案

简单的解决方案,不要使用setuptools创建源代码发行版,对于该命令,请降级为distutils:

from distutils.command.sdist import sdist
from setuptools import setup

setup(
    # ... all the usual setup arguments ...
    cmdclass = {'sdist': sdist},
)

关于python - 如何使setuptools忽略Subversion库存?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1129180/

10-13 09:13