Python软件包可以依赖于另一个Python软件包的特定版本控制修订吗?
某些有用的Python软件包在pypi上已损坏,并且唯一可接受的版本是版本控制系统中的特定版本。可以用setup.py
例如
requires = 'svn://example.org/useful.package/trunk@1234'
?
-
您需要做两件事。首先,要求您想要的确切版本,例如:
install_requires = "useful.package==1.9dev-r1234"
然后包含一个
dependency_links
设置,指定在哪里找到它:dependency_links = ["svn://example.org/useful.package/trunk@1234#egg=useful.package-1.9dev-r1234"]
请注意,URL的版本
#egg=
部分dependency_links
必须与您在其中指定的内容 完全
匹配install_requires
;这就是将这两部分联系在一起的原因。发生的情况是setuptools在链接上看到#egg标记,并将该URL保存为该精确版本的软件包的可用下载URL。然后,当稍后尝试解决该要求时,应下载该精确的SVN
URL。(不过,请注意,为使此方法 真正
起作用,目标SVN修订版实际上必须使用该名称和版本来构建一个鸡蛋。否则,您的依赖项将在运行时失败!因此,这仅在您所依赖的软件包有效会在其默认内部版本号中使用SVN修订标签。)