Python-Pakete von Upstreams und externen Verbindungen anfordern - CodeArtifact

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Python-Pakete von Upstreams und externen Verbindungen anfordern

Wenn Sie eine Python-Paketversion von pypi.org importieren, CodeArtifact werden alle Assets in dieser Paketversion importiert. Während die meisten Python-Pakete eine kleine Anzahl von Assets enthalten, enthalten einige über 100 Assets, typischerweise zur Unterstützung mehrerer Hardwarearchitekturen und Python-Interpreter.

Es ist üblich, dass neue Assets für eine bestehende Paketversion auf pypi.org veröffentlicht werden. Beispielsweise veröffentlichen einige Projekte neue Assets, wenn neue Versionen von Python veröffentlicht werden. Wenn ein Python-Paket von CodeArtifact with installiert wirdpip install, werden die im CodeArtifact Repository gespeicherten Paketversionen aktualisiert, um den neuesten Satz von Ressourcen von pypi.org widerzuspiegeln.

In ähnlicher Weise werden neue Elemente, die für eine Paketversion in einem CodeArtifact Upstream-Repository verfügbar sind, aber im aktuellen CodeArtifact Repository nicht vorhanden sind, bei pip install der Ausführung im aktuellen Repository beibehalten.

Paketversionen wurden entfernt

Einige Paketversionen in pypi.org sind als Yanked markiert, was dem Paketinstallationsprogramm (wie pip) mitteilt, dass die Version nicht installiert werden sollte, es sei denn, sie ist die einzige, die einem Versionsbezeichner entspricht (entweder mit oder). == === Weitere Informationen finden Sie unter PEP_592.

Wenn eine Paketversion in ursprünglich von einer externen Verbindung zu pypi.org abgerufen CodeArtifact wurde, CodeArtifact stellt Sie bei der Installation der Paketversion aus einem CodeArtifact Repository sicher, dass die aktualisierten Yankeed-Metadaten der Paketversion von pypi.org abgerufen werden.

Woher weiß ich, ob eine Paketversion gelöscht wurde

Um zu überprüfen, ob eine Paketversion eingebunden ist CodeArtifact, können Sie versuchen, sie mit zu installieren. pip install packageName===packageVersion Wenn die Paketversion gesperrt ist, erhalten Sie eine Warnmeldung, die der folgenden ähnelt:

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

Um zu überprüfen, ob eine Paketversion in pypi.org entfernt wurde, können Sie die pypi.org-Liste der Paketversion aufrufen. https://pypi.org/project/packageName/packageVersion/

Den Sperrstatus für private Pakete festlegen

CodeArtifact unterstützt nicht das Setzen von Yankeed-Metadaten für Pakete, die direkt in Repositorys veröffentlicht wurden. CodeArtifact

Warum wird das Abrufen der neuesten Yankeed-Metadaten oder Assets für eine Paketversion CodeArtifact nicht unterstützt?

CodeArtifact Stellt normalerweise sicher, dass beim Abrufen einer Python-Paketversion aus einem CodeArtifact Repository die abgerufenen Metadaten den neuesten Wert auf pypi.org haben. up-to-date Darüber hinaus wird die Liste der Assets in der Paketversion mit dem neuesten Satz auf pypi.org und allen Upstream-Repositorys aktualisiert. CodeArtifact Dies gilt unabhängig davon, ob Sie die Paketversion zum ersten Mal installieren und sie von pypi.org in Ihr CodeArtifact Repository CodeArtifact importieren, oder ob Sie das Paket schon einmal installiert haben. Es gibt jedoch Fälle, in denen der Paketmanager-Client, wie z. B. pip, die neuesten abgerufenen Metadaten nicht von pypi.org oder Upstream-Repositorys abruft. Stattdessen CodeArtifact werden die Daten zurückgegeben, die bereits in Ihrem Repository gespeichert sind. In diesem Abschnitt werden die drei Möglichkeiten beschrieben, wie dies geschehen kann:

Upstream-Konfiguration: Wenn die externe Verbindung zu pypi.org aus dem Repository oder seinen Upstreams entfernt wird disassociate-external-connection, werden die abgerufenen Metadaten nicht mehr von pypi.org aktualisiert. Ebenso sind beim Entfernen eines Upstream-Repositorys die Assets aus dem entfernten Repository und den Upstreams des entfernten Repositorys für das aktuelle Repository nicht mehr verfügbar. Das Gleiche gilt, wenn Sie die Kontrolle über die Herkunft von CodeArtifact Paketen verwenden, um zu verhindern, dass neue Versionen eines bestimmten Pakets abgerufen werden. Durch diese Einstellung upstream=BLOCK wird verhindert, dass gelöschte Metadaten aktualisiert werden.

Paketversionsstatus: Wenn Sie den Status einer Paketversion auf etwas anderes als Published oder setzenUnlisted, werden gelöschte Metadaten und Assets der Paketversion nicht aktualisiert. Ähnlich verhält es sich, wenn Sie eine bestimmte Paketversion abrufen (sagen wirtorch 2.0.1) und dieselbe Paketversion in einem Upstream-Repository mit einem Status vorhanden ist, der nicht Published oder istUnlisted, blockiert dies auch die Übertragung von Metadaten und die Weitergabe von Inhalten aus dem Upstream-Repository zum aktuellen Repository. Das liegt daran, dass andere Paketversionsstatus ein Hinweis darauf sind, dass die Versionen in keinem Repository mehr verwendet werden sollen.

Direktes Veröffentlichen: Wenn Sie eine bestimmte Paketversion direkt in einem CodeArtifact Repository veröffentlichen, wird dadurch verhindert, dass Metadaten entfernt und die Inhalte der Paketversion aus den Upstream-Repositorys und pypi.org aktualisiert werden. Nehmen wir zum Beispiel an, Sie laden ein Asset aus der Paketversion heruntertorch 2.0.1, z. B. mit einem Webbrowsertorch-2.0.1-cp311-none-macosx_11_0_arm64.whl, und veröffentlichen es dann mit Twine as in Ihrem CodeArtifact Repository. torch 2.0.1 CodeArtifact verfolgt, dass die Paketversion durch direkte Veröffentlichung in Ihrem Repository in die Domain gelangt ist, nicht über eine externe Verbindung zu pypi.org oder einem Upstream-Repository. In diesem Fall werden die abgerufenen Metadaten CodeArtifact nicht mit den Upstream-Repositorys oder pypi.org synchronisiert. Das Gleiche gilt, wenn Sie torch 2.0.1 in einem Upstream-Repository veröffentlichen — das Vorhandensein der Paketversion verhindert die Weitergabe von Metadaten und Inhalten an Repositorys weiter unten im Upstream-Diagramm.