如何使setuptools忽略subversion目录?

2024-05-13 15:20:10 发布

您现在位置:Python中文网/ 问答频道 /正文

当使用设置.py使用设置工具:

from setuptools import setup
...

源分发由以下人员创建:

^{pr2}$

不仅像往常一样包括清单.in,但它还包括Subversion在包目录下列出的所有受版本控制的文件。这太烦人了。这不仅使我很难对我的包分发的文件进行任何形式的显式控制,而且意味着当我按照“svn export”而不是“svn checkout”构建我的包时,我的包的内容可能会非常不同,因为没有.svn元数据设置工具将对包含的内容做出不同的选择。在

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

到目前为止,我做的最好的就是一个丑陋的猴子区:

from setuptools.command import sdist
del sdist.finders[:]

但这是Python,不是丛林,所以我当然想要一个更好的解决方案,根本不需要猴子。我如何驯服setuptools,关闭它的魔力,让它通过查看我的清单.py相反呢?在


Tags: 文件工具项目frompyimport目录内容
3条回答

创建清单.in归档方式:

recursive-exclude .
# other MANIFEST.in commands go here
# to explicitly include whatever files you want

请参见http://docs.python.org/distutils/commandref.html#sdist-cmd清单.in语法。在

我知道你对此了解很多,布兰登,但我会尽我所能给出一个完整的答案(尽管我不是setuptools gury),为了其他人的利益。在

这里的问题是setuptools本身涉及很多黑魔法,包括使用一个名为setuptools.file_查找器您可以添加插件来查找要包含的文件。但是,我完全不知道如何从中删除插件。。。在

  • 快速解决方法:svn将您的包导出到临时目录并运行设置.py从那里开始。这意味着您没有svn,因此svn finder找不到要包含的文件。:)

  • 较长的解决方法:您真的需要setuptools吗?Setuptools有很多特性,所以答案很可能是肯定的,但这些特性主要是dependencies(因此您的依赖项可以通过easy_install来安装)、命名空间包(美食酒吧),以及入口点。命名空间包实际上也可以在不使用setuptools的情况下创建。但如果你不使用这些,你可能真的可以通过使用distutils来逃脱惩罚。

  • 难看的解决方法:你在问题中给sdist的monkeypatch,这只会使插件没有任何查找器,并且很快退出。

所以,正如你所见,这个答案,虽然尽我所能完整,但仍然是令人尴尬的不完整。我真的不能回答你的问题,尽管我认为答案是“你不能”。在

也许答案就在你设置.py. 你用的是find_软件包吗?默认情况下,此函数使用VCS(例如subversion、hg、…)。如果您不喜欢它,只需编写一个不同的Python函数,它只收集您想要的东西。在

相关问题 更多 >