View a markdown version of this page

Python 兼容性 - CodeArtifact

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Python 兼容性

CodeArtifact 支持/simple/<project>/、、和其他 Python 客户端使用的 pip PyPI 简单存储库 API。twine uv客户端使用Accept请求标头在 HTML 和 JSON 响应之间进行选择。

简单存储库 API 支持

CodeArtifact 实现了 P ep 503、PEP 691 和 PEP700 定义的 PyP I 简单存储库 API 的 1.1 版。

/simple/<project>/终端节点支持以下Accept标题内容类型:

  • application/vnd.pypi.simple.v1+json: JSON 响应(PEP 691,PEP 700)。

  • application/vnd.pypi.simple.v1+html: HTML 响应 (PEP 503)。

  • application/vnd.pypi.simple.latest+json: 解析为支持的最新 JSON 版本。

  • application/vnd.pypi.simple.latest+html: 解析为支持的最新 HTML 版本。

  • text/html*/*、或无Accept标题:HTML 响应(默认向后兼容)。

如果客户端指定的Accept标头不包含任何支持的内容类型, CodeArtifact 则返回406 Not Acceptable

JSON 响应包括 PEP 700 字段 versionssizeupload-time以及 PEP 691 字段。HTML 响应的每个构件的上传时间与每个工件链接上的data-upload-time属性相同。

对于在启用每项资产元数据捕获之前缓存的软件包版本,可能缺少sizeupload-time字段。当客户端通过 JSON Simple Repository API 请求此类包时,会从上游注册表 CodeArtifact 重新获取元数据并填充缺失的字段。客户无需采取任何行动,随后对相同软件包版本的请求会返回完整的元数据。

pip23.0 及更高版本并默认uv发送 JSON Accept 标头,因此大多数客户端无需任何额外配置即可接收 JSON。

示例:为项目请求 JSON

以下示例用于curl获取requests项目的 JSON 简单存储库 API 响应。从获取存储库 URLaws codeartifact get-repository-endpoint,从中获取授权令牌aws codeartifact get-authorization-token

curl --header "Accept: application/vnd.pypi.simple.v1+json" \ --header "Authorization: Bearer $CODEARTIFACT_AUTH_TOKEN" \ "https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/pypi/my_repo/simple/requests/"
注意

CodeArtifact PyPI 端点接受 HTTP 基本身份验证(用户名aws、设置为授权令牌的密码)或持有者令牌身份验证。本指南其他地方显示的piptwine配置使用 HTTP Basic。

以下示例显示了典型的 JSON 响应(为简洁起见,已截断)。versionssize、和upload-time字段来自 PEP 700;hashesrequires-python、和yanked字段来自 PEP 691。

{ "meta": { "api-version": "1.1" }, "name": "requests", "versions": [ "2.31.0", "2.32.0", "2.32.3" ], "files": [ { "filename": "requests-2.32.3-py3-none-any.whl", "url": "2.32.3/requests-2.32.3-py3-none-any.whl", "hashes": { "sha256": "70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", "md5": "df6df19f49fc7ae54ee5ff2dd3d22d2c" }, "requires-python": ">=3.8", "size": 64928, "upload-time": "2024-05-29T15:37:49.123456Z", "yanked": false } ] }

不支持的 PyPI API

CodeArtifact 不支持以下 PyPI API:

  • PyPI API XML-RPC 。

  • PyPI Warehou se JSON API,它在下面提供了项目级和发布级的 JSON 端点。/pypi/这是一个单独的 API,不同于简单存储库 API 的 PEP 691 JSON 变体,后者 CodeArtifact 确实支持。

  • 项目列表端点/simple/。仅支持项目详细信息/simple/<project>/端点。

有关 PyPI API 的更多信息,请参阅 Python 打包管理局网站上的 Legacy API 参考资料。 GitHub

pip 命令支持

以下各节总结了 CodeArtifact 存储库支持的 pip 命令以及不支持的特定命令。

与存储库进行交互的受支持命令

此部分列出了 pip 命令,其中 pip 客户端向其配置的注册表发出一个或多个请求。这些命令已经过验证,在针对 CodeArtifact 存储库调用时可以正常运行。

命令 说明

install

安装程序包。

download

下载程序包。

CodeArtifact 不实现pip search。如果您配置pip了 CodeArtifact 存储库,则运行pip search将搜索并显示来自 PyP I 的包。

支持的客户端命令

这些命令不需要与存储库进行任何直接交互,因此 CodeArtifact 无需执行任何操作即可支持它们。

命令 说明

uninstall

卸载程序包。

freeze

按要求格式输出已安装的程序包。

list

列出已安装程序包。

show

显示有关已安装程序包的信息。

check

验证已安装的程序包是否具有兼容的依赖项。

config

管理本地和全局配置。

wheel

根据您的要求构建 wheel。

hash

计算程序包存档的哈希值。

completion

协助完成命令。

debug

显示对调试有用的信息。

help

显示命令的帮助。