View a markdown version of this page

從上游和外部連線請求 Python 套件 - CodeArtifact

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

從上游和外部連線請求 Python 套件

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

對於現有的套件版本,新資產通常會發佈到 pypi.org。例如,有些專案會在發行新版本的 Python 時發佈新資產。從具有 的 CodeArtifact 安裝 Python 套件時pip install,會更新 CodeArtifact 儲存庫中保留的套件版本,以反映來自 pypi.org:// 的最新資產集。

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

Yanked 套件版本

https://pypi.org 中的某些套件版本標記為 yanked,它會與套件安裝程式 (例如 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 套件版本時,使用 https://pypi.org 上的最新值來up-to-date偏擺中繼資料。此外,套件版本中的資產清單也會在 pypi.org 和任何上游 CodeArtifact 儲存庫上保持最新設定。無論您是第一次安裝套件版本,而且 CodeArtifact 從 pypi.org 將其匯入 CodeArtifact 儲存庫,或是先前已安裝套件,都是如此。不過,在某些情況下,套件管理員用戶端,例如 pip,不會從 pypi.org 或上游儲存庫提取最新的空白中繼資料。反之,CodeArtifact 會傳回已存放在儲存庫中的資料。本節說明發生這種情況的三種方式:

上游組態:如果使用 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 做為 將其發佈到您的 CodeArtifact 儲存庫torch 2.0.1。CodeArtifact 會透過直接發佈至您的儲存庫來追蹤套件版本進入網域,而不是從 pypi.org 的外部連線或上游儲存庫。在此情況下,CodeArtifact 不會讓偏擺中繼資料與上游儲存庫或 pypi.org 保持同步。如果您發佈torch 2.0.1到上游儲存庫,則相同情況為:套件版本的存在會阻止將偏遠中繼資料和資產傳播到更深入上游圖形的儲存庫。