介绍
PyPI 有多个 API 端点和公共数据集,本层次结构的目录中分别列出了每个端点和数据集。
API策略
请注意 PyPI API 的相关政策。
缓存
所有 API 请求均会被缓存。对 JSON、RSS 或索引 API 的请求由我们的 CDN 提供商缓存。您可以根据响应中的 ` Cache-Control`X-Cache和 `Cache- Control` 标头来判断是否已命中缓存。X-Cache-Hits
对 JSON、RSS 和 Index API 的请求也会提供一个ETag请求头。如果您发出大量重复请求,请确保您的 API 客户端会遵循此请求头,以判断是否需要重复请求。
XML-RPC API 不具备指示缓存响应的功能。
限速
由于大量使用缓存和 CDN,目前边缘端的 PyPI API 没有速率限制。如果 XML-RPC API 的使用导致服务质量下降,则可能会对其进行速率限制。
此外,PyPI 保留因不负责任的行为而暂时或永久禁止消费者使用其服务的权利。
如果您计划向 PyPI API 发出大量请求,请遵循以下建议:
- 设置消费者
User-Agent请求头,以便唯一标识您的请求。同时,将您的联系信息添加到此值中也很有帮助。 - 尽量不要在短时间内(几分钟内)发出大量请求(数千个)。虽然 PyPI 通常可以处理,但最好尽可能在较长时间内串行发出请求。
- 如果您的客户实际上是一个组织或服务,需要从 PyPI 下载大量软件包,请考虑 使用您自己的索引镜像或缓存。
API偏好
如需定期查看新软件包或现有软件包的更新,请使用我们的RSS 源。
所有新的集成都不应再使用 XML-RPC API,因为它们计划被弃用。现有用户应迁移到 JSON/RSS/ Index API。
集成指南
许多工具已经与 PyPI 集成,可以上传软件包或检索数据;请参阅Python 打包指南中的工具推荐。
向 PyPI 查询软件包 URL
从https://pypi.org复制下载链接时,你会得到一个包含随机哈希值的 URL。
此哈希值由文件的校验和计算得出。PyPI 上各个文件的 URL 是静态的,不会改变。
官方指南
查询 PyPI 的Index API或JSON API以确定从哪里下载文件。
可预测的URL
您可以使用我们的传送服务来获取此文件。此服务适用于使用 API 不切实际或不可能的情况。例如,Linux 软件包维护者就需要使用静态 URL,因为在某些情况下,软件包构建脚本或软件包元数据需要静态 URL。
URL 可以按如下方式构造,wheel 文件名遵循 PEP 491 的文件名约定。
host = "https://files.pythonhosted.org"
def source_url(name, version):
return f"{host}/packages/source/{name[0]}/{name}/{name}-{version}.tar.gz"
def wheel_url(name, version, build_tag, python_tag, abi_tag, platform_tag):
# https://www.python.org/dev/peps/pep-0491/#file-name-convention
wheel_parts = {
tag: re.sub(r"[^\w\d.]+", "_", part, re.UNICODE)
for tag, part in locals().items()
}
wheel_parts["optional_build_tag"] = (
f"-{wheel_parts['build_tag']}" if build_tag else ""
)
filename = "{name}-{version}{optional_build_tag}-{python_tag}-{abi_tag}-{platform_tag}.whl".format_map(
wheel_parts
)
return f"{host}/packages/{python_tag}/{name[0]}/{name}/{filename}"
可预测的 URL 使用示例:
$ curl -I https://files.pythonhosted.org/packages/source/v/virtualenv/virtualenv-15.2.0.tar.gz
HTTP/2 302
location: https://files.pythonhosted.org/packages/b1/72/2d70c5a1de409ceb3a27ff2ec007ecdd5cc52239e7c74990e32af57affe9/virtualenv-15.2.0.tar.gz
如您所见,这只是重定向到规范文件。