当使用设置.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相反呢?在
创建清单.in归档方式:
请参见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函数,它只收集您想要的东西。在
相关问题 更多 >
编程相关推荐