我刚刚开始使用 setuptools 和 virtualenv。我的包需要最新的 python-gearman,它只能从 GitHub 获得。 PyPI 上的 python-gearman 版本是旧版本。 Github 源是 setuptools 兼容的,即有 setup.py 等。有没有办法让 setuptools 下载并安装新版本,而不是在 PyPI 上查找并安装旧版本?
仅供引用,新的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 会发现有一个“gearman 2.0.0beta”可以从那个 URL 下载,如果你指定“gearman>=2.0.0beta”,并且很高兴在 PyPI 上选择它在您的依赖项中..
(通常,这种事情的完成方式是在一个人的 PyPI 页面上包含一个指向可下载源的链接;在这种情况下,如果 gearman 包的作者包含了一个像上面这样的链接,你就已经设置好了. 通常,人们用'myproject-dev'标记开发版本,然后人们使用'myproject>=somever,==dev'的要求,这样如果没有somever或更高版本的包,easy_install会尝试查看或下载版本。)
使用
--process-dependency-links
时,您需要指定 pip
。请注意,依赖链接处理已被弃用,并将在 future 版本中删除。关于python - 如何让 setuptools 安装不在 PyPI 上的软件包?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3472430/