PyPI 是否有用于包下载的简单 url?

Win*_*del 6 python pypi

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 或类似的东西是否存在,这样我就可以轻松地增加版本号并获得没有长哈希码的较新版本?

Win*_*del 8

正确的网址是:

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)

  • 只是回答我自己的问题,包 URL 模式是这样的:`https://pypi.io/packages/source/{ first letter }/{ package name }/{ package name }-{ version }.tar.gz` (3认同)

Jac*_*Foy 7

这些似乎截至 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 响应中的字段中为目标平台选择适当的条目。我们无法从列表中获取静态元素,因为不同包的顺序似乎有所不同。)