從上流和外部連接請求 Python 包 - CodeArtifact

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

從上流和外部連接請求 Python 包

pypi.org 匯入 Python 套件版本時, CodeArtifact 會匯入該套件版本中的所有資產。雖然大多數 Python 套件包含少量資產,但有些資產包含 100 多個資產,通常用於支援多種硬體架構和 Python 解譯器。

對於現有的軟件包版本,新資產發佈到 pypi.org 是很常見的。例如,某些專案會在新版 Python 發行時發佈新資產。 CodeArtifact 使用安裝 Python 套件時pip install,會更新保留在 CodeArtifact 儲存庫中的套件版本,以反映來自 pypi.org 的最新資產集。

同樣地,如果上游 CodeArtifact 儲存庫中不存在於目前 CodeArtifact 儲存庫中的套件版本可用新資產,則在執行時pip install,它們將保留在目前存放庫中。

猛拉包版本

pypi.org 中的某些套件版本會標示為「籤」,它會與套件安裝程式(例如 pip)通訊,除非該版本是唯一符合版本說明符的版本(使用或),否則不應安裝該版本。== ===如需詳細資訊,請參閱 PEP_592

如果中的套件版本原本 CodeArtifact 是從 pypi.org 的外部連線中擷取,則當您從軟體 CodeArtifact 庫安裝套件版本時,請 CodeArtifact 確保套件版本的更新後抽取的中繼資料是從 pypi.org 擷取。

如何知道軟件包版本是否被拉扯

要檢查軟件包版本是否被拉入 CodeArtifact,您可以嘗試使用pip install packageName===packageVersion. 如果套件版本遭到抽取,您將會收到類似下列內容的警告訊息:

WARNING: The candidate selected for download or install is a yanked version

若要檢查 pypi.org 中是否有套件版本被抽取,您可以瀏覽套件版本的 pypi.org 清單,網址為。https://pypi.org/project/packageName/packageVersion/

在私人包裹上設置被抽取狀態

CodeArtifact 不支援為直接發佈至 CodeArtifact 儲存庫的套件設定抽取的中繼資料。

為什麼 CodeArtifact 不獲取軟件包版本的最新抽取元數據或資產?

通常情況下, CodeArtifact 確保當從 CodeArtifact 存儲庫中提取 Python 包版本時,被抽取的元數據 up-to-date 與 pypi.org 上的最新值。此外,軟件包版本中的資產列表也會以 pypi.org 和任何上游存儲庫上的最新集合保持更新。 CodeArtifact 無論您是第一次安裝軟件包版本並將其從 pypi.org CodeArtifact 導入到您的 CodeArtifact 存儲庫中,或者您之前已安裝過該軟件包,都是如此。但是,在某些情況下,軟件包管理器客戶端(例如 pip)不會從 pypi.org 或上游存儲庫中提取最新的被抽取的元數據。相反, CodeArtifact 將返回已存儲在存儲庫中的數據。本節說明可能發生這種情況的三種方式:

上游配置:如果與 pypi.org 的外部連接從存儲庫或使用其上流中刪除 disassociate-external-connection,則將不再從 pypi.org 刷新抽取的元數據。同樣地,如果您移除上游儲存庫,則目前儲存庫中的資產將無法再使用已移除儲存庫的上行串流。如果您使用 CodeArtifact 套件來源控制項來防止提取特定套件的新版本,也是如此 — 設定upstream=BLOCK會阻止重新整理被抽取的中繼資料。

P@@ ackage 版本狀態:如果您將軟件包版本的狀態設置為除了Published或之外的任何內容Unlisted,則不會刷新包版本的拆卸元數據和資產。同樣,如果您正在獲取特定的軟件包版本(例如torch 2.0.1),並且上游存儲庫中存在相同的軟件包版本,其狀態為不是PublishedUnlisted,這也將阻止從上游存儲庫到當前存儲庫的抽取元數據和資產傳播。這是因為其他套件版本狀態表示這些版本不會再在任何儲存庫中使用。

直接發佈:如果您將特定套件版本直接發佈到 CodeArtifact 儲存庫中,這將防止從其上游儲存庫和 pypi.org 對套件版本進行抽取的中繼資料和資產重新整理。例如,假設您從軟件包版本(例如torch 2.0.1,使用 Web 瀏覽器)下載資產torch-2.0.1-cp311-none-macosx_11_0_arm64.whl,然後使用麻線作為torch 2.0.1將其發佈到 CodeArtifact 存儲庫。 CodeArtifact 追蹤套件版本是透過直接發佈到您的儲存庫而不是從外部連線到 pypi.org 或上游儲存庫來進入網域。在這種情況下, CodeArtifact 不會使被抽取的元數據與上游存儲庫或 pypi.org 保持同步。如果您發佈torch 2.0.1到上游存放庫中,情況也是如此 — 套件版本的存在將會阻止向上游圖形下方延伸的中繼資料和資產到儲存庫的傳播。