本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
从上游和外部连接请求 Python 程序包
从 pypi.org
对于现有程序包版本,将新资产发布到 pypi.org 是一种常见的做法。例如,在发布新版本的 Python 时,一些项目会发布新资产。使用 pip install
从 CodeArtifact 安装 Python 程序包时,保留在 CodeArtifact 存储库中的程序包版本会更新,以反映来自 pypi.org 的最新资产集。
同样,如果上游 CodeArtifact 存储库中的某个程序包版本有新的可用资产,而这些资产不存在于当前 CodeArtifact 存储库中,则它们将在运行 pip install
时保留在当前存储库中。
已撤销的程序包版本
pypi.org 中的某些程序包版本标记为已撤销,这会向程序包安装程序(例如 pip)表明,除非该版本是唯一与版本说明符匹配的版本(使用 ==
或 ===
),否则不应安装该版本。有关更多信息,请参阅 PEP_592
如果 CodeArtifact 中的程序包版本最初是从外部连接提取到 pypi.org
如何知道某个程序包版本是否已撤销
要检查某个程序包版本是否已在 CodeArtifact 中撤销,您可以尝试使用 pip install
来安装。如果程序包版本已撤销,您会收到一条与以下内容类似的警告消息:packageName
===packageVersion
WARNING: The candidate selected for download or install is a yanked version
要查看程序包版本是否在 pypi.orghttps://pypi.org/project/
。packageName
/packageVersion
/
对私有程序包设置撤销状态
CodeArtifact 不支持为直接发布到 CodeArtifact 存储库的程序包设置撤销元数据。
为什么 CodeArtifact 未提取程序包版本的最新撤销元数据或资产?
通常,CodeArtifact 会确保在从 CodeArtifact 存储库提取 Python 程序包版本时,撤销元数据是最新的,在 pypi.org
上游配置:如果使用 disassociate-external-connection 从存储库或其上游移除与 pypi.org 的外部连接,则不再从 pypi.org 刷新撤销元数据。同样,如果您移除上游存储库,则已移除的存储库中和已移除存储库上游的资产将不再可供当前存储库使用。如果您使用 CodeArtifact 程序包来源控制来阻止提取特定程序包的新版本,则情况也是如此,设置 upstream=BLOCK
会阻止刷新撤销元数据。
程序包版本状态:如果您将程序包版本的状态设置为除 Published
或 Unlisted
之外的任何其它状态,则不会刷新程序包版本的撤销元数据和资产。同样,如果您正在提取特定的程序包版本(例如 torch 2.0.1
),而上游存储库中存在相同的程序包版本,但状态不是 Published
或 Unlisted
,这也将阻止撤销元数据和资产从上游存储库传播到当前存储库。这是因为其它程序包版本状态表明这些版本不打算再在任何存储库中使用。
直接发布:如果您将特定的程序包版本直接发布到 CodeArtifact 存储库中,这将阻止从其上游存储库和 pypi.org 刷新程序包版本的撤销元数据和资产。例如,假设您使用 Web 浏览器从程序包版本 torch 2.0.1
下载资产(例如 torch-2.0.1-cp311-none-macosx_11_0_arm64.whl
),然后使用 twine 以名称 torch 2.0.1
将其发布到您的 CodeArtifact 存储库。CodeArtifact 跟踪到程序包版本是通过直接发布到存储库,而不是通过与 pypi.org 或上游存储库的外部连接来进入域。在这种情况下,CodeArtifact 不会使撤销元数据与上游存储库或 pypi.org 保持同步。如果您将 torch 2.0.1
发布到上游存储库,情况也是如此,因为存在程序包版本,所以会阻止将撤销元数据和资产传播到上游图更下方的存储库。