PyPI 是否支持简单的下载 url?我想这样做的原因是我有一台安装了 curl 的 PC,但没有安装 pip。所以我将能够安装包:
pip install ppci
Run Code Online (Sandbox Code Playgroud)
但是由于 pip 不可用,我想要做的是用 curl 下载这个包并解压它。
现在我可以这样做:
curl https://pypi.python.org/packages/4c/e8/fd7241885330ace50d2f7598a2652d4e80c1d922faece7bba88529cf6cfe/ppci-0.5.4.tar.gz
tar xfz ppci-0.5.4.tar.gz
Run Code Online (Sandbox Code Playgroud)
但我想要的是一个更干净的网址,如下所示:
curl https://pypi.python.org/packages/ppci/0.5.4/ppci-0.5.4.tar.gz
Run Code Online (Sandbox Code Playgroud)
所以,将来我可以轻松地将版本升级到这个:
curl https://pypi.python.org/packages/ppci/0.5.5/ppci-0.5.5.tar.gz
Run Code Online (Sandbox Code Playgroud)
这个 url 或类似的东西是否存在,这样我就可以轻松地增加版本号并获得没有长哈希码的较新版本?
正确的网址是:
https://pypi.io/packages/source/p/ppci/ppci-0.5.4.tar.gz
Run Code Online (Sandbox Code Playgroud)
请注意,此 url 将重定向,但 curl 可以使用 -L 选项处理它。
url 格式如下评论中所述:
https://pypi.io/packages/source/{ package_name_first_letter }/{ package_name }/{ package_name }-{ package_version }.tar.gz
Run Code Online (Sandbox Code Playgroud)
这些似乎截至 2019 年 10 月 30 日都有效,并将其中一个重定向到下一个:
https://pypi.io/packages/source/p/pip/pip-19.3.1.tar.gz
https://pypi.org/packages/source/p/pip/pip-19.3.1.tar.gz
https://files.pythonhosted.org/packages/source/p/pip/pip-19.3.1.tar.gz
https://files.pythonhosted.org/packages/ce/ea/9b445176a65ae4ba22dce1d93e4b5fe182f953df71a145f557cffaffc1bf/pip-19.3.1.tar.gz
Run Code Online (Sandbox Code Playgroud)
这个答案描述了一种使用 Debian 构建的类似索引来获取轮子的方法: https: //stackoverflow.com/a/53176862/881629
PyPI 文档积极劝阻使用上述传送带服务,因为它主要用于遗留支持,并且我们“通常应该查询包 URL 的索引而不是猜测”。https://warehouse.readthedocs.io/api-reference/integration-guide.html#querying-pypi-for-package-urls
(感谢 Wolfgang Kuehn 提供了 Warehouse 文档的指针,但请注意,要获得正确的轮子,我们需要从urlsAPI 响应中的字段中为目标平台选择适当的条目。我们无法从列表中获取静态元素,因为不同包的顺序似乎有所不同。)