如何使setuptools安装不在PyPI上的软件包?

问题:

我刚刚开始使用setuptools和virtualenv。我的包需要最新的python-gearman,只能从GitHub获得。 PyPI的python-gearman版本是旧的。 Github源与setuptools兼容,即setup.py等。有没有办法使setuptools下载并安装新版本,而不是在PyPI上查找并安装旧版本?
FYI,新的python-gearman是http://github.com/mtai/python-gearman

回答:

关键是告诉easy_install可以下载软件包。在这种特殊情况下,可以在url http://github.com/mtai/python-gearman/tarball/master找到它。但是,该链接本身将不起作用,因为easy_install只能通过查看URL得到什么来告诉它。
通过将其更改为http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta,easy_install将能够识别包名称及其版本。
最后一步是将URL添加到您的软件包的dependency_links中,例如:

setup(
   ...
   dependency_links = ['http://github.com/mtai/python-gearman/tarball/master#egg=gearman-2.0.0beta']
)

现在,当您安装了您的软件包时,easy_install会发现有一个可以从该URL下载的“gearman 2.0.0beta”,如果您指定“gearman> = 2.0.0beta”在你的依赖
(通常,这样做的方式是将PyPI页面上的链接包含到可下载的源代码;在这种情况下,如果齿轮套件的作者已经包含了如上所述的链接,那么您已经设置好了通常,人们用’myproject-dev’标记开发版本,然后人们使用’myproject> = somever,== dev’的要求,所以如果没有一个或者更多的包,easy_install会尝试查看或下载该版本。)
使用pip时需要指定--process-dependency-links。请注意,依赖关系链接处理已被弃用,将在以后的版本中被删除。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How can I make setuptools install a package that’s not on PyPI?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

− 4 = 2