Python包可以依赖于另一个Python包的特定版本控制修订吗?

joe*_*ker 10 python distutils pip setuptools easy-install

一些有用的Python包在pypi上被破坏,唯一可接受的版本是修订控制系统中的特定修订版.可以用setup.py例如表达

requires = 'svn://example.org/useful.package/trunk@1234'

PJ *_*Eby 12

你需要做两件事.首先,需要您想要的确切版本,例如:

install_requires = "useful.package==1.9dev-r1234"
Run Code Online (Sandbox Code Playgroud)

然后包含一个dependency_links设置,指定在哪里找到它:

dependency_links = ["svn://example.org/useful.package/trunk@1234#egg=useful.package-1.9dev-r1234"]
Run Code Online (Sandbox Code Playgroud)

请注意,URL 的版本#egg=部分dependency_links必须与您指定的版本完全匹配install_requires; 这就是将两个部分联系在一起的原因.

会发生什么是setuptools在链接上看到#egg标记并将URL保存为该包的精确版本的可用下载URL.然后,当它稍后尝试解决该要求时,它应该下载该精确的SVN URL.

(但请注意,为了真正起作用,目标SVN版本必须实际构建一个具有该名称和版本的egg.否则,您的依赖项将在运行时失败!所以,这实际上只有在您依赖的包时才有效on在其默认构建版本号中使用SVN修订标记.)