Python-Pakete verwalten

Auf dieser Seite wird beschrieben, wie Sie Python-Pakete und -Paketversionen hinzufügen, ansehen und löschen.

Hinweis

  1. Installieren und initialisieren Sie die Google Cloud CLI.

    Zum Ausführen von Befehlen für Python-Repositories ist die Google Cloud CLI Version 354.0.0 oder höher erforderlich. Sie können mit dem folgenden Befehl die Version ermitteln:

    gcloud version
    
  2. Wenn das Ziel-Repository nicht vorhanden ist, erstellen Sie ein neues Python-Paket-Repository.

  3. Prüfen Sie, ob Python 3 installiert ist. Eine Installationsanleitung finden Sie in der Google Cloud-Anleitung zum Einrichten von Python.

  4. (Optional) Konfigurieren Sie die Standardeinstellungen für gcloud-Befehle.

  5. Wenn Sie die Schlüsselauthentifizierung mit gcloud-Anmeldedaten verwenden, melden Sie sich mit Ihrem Nutzerkonto oder Dienstkonto in der Google Cloud CLI an.

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Repository zu gewähren, damit Sie die Berechtigungen zum Verwalten von Paketen erhalten:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.

Pakete hinzufügen

Repository-Modi: Standard

Wenn Sie ein Python-Projekt erstellen, werden die Distributionsdateien in einem dist-Unterverzeichnis in Ihrem Projekt gespeichert. Sie können dann mit Twine Pakete in ein Standard-Repository hochladen.

Wir empfehlen folgende Best Practices für Pakete:

  • Verwenden Sie eindeutige Namen für Ihre privaten Pakete, damit sie nicht mit den Paketnamen auf pypi.org übereinstimmen, insbesondere wenn Ihre Pipelinekonfiguration mehrere Paketindexe enthält.
  • Verwenden Sie in PEP 440 die Versionsspezifikationsspezifikation für die Paketversionsnummer. Standardmäßig installiert „pip“ nur stabile Releases. Anhand der Spezifikation für die Versionskennung werden stabile Versionen von Vorabversionen unterschieden und es werden alle Anforderungen zur Installation durch die Version geparst.

So fügen Sie ein Paket hinzu:

  1. Installieren Sie Twine.

    pip install twine
    
  2. Wechseln Sie zum Python-Projektverzeichnis.

  3. Laden Sie die Distributionsdateien aus dem Unterverzeichnis dist des Projekts in das Repository hoch. Führen Sie dazu diesen Befehl aus:

    twine upload dist/*
    

    Mit dem Flag --repository-url können Sie ein bestimmtes Repository angeben.

    twine upload --repository-url https://LOCATION-python.pkg.dev/PROJECT/REPOSITORY/ dist/*
    

Pakete und Versionen ansehen

Repository-Modi: Standard, Remote

So rufen Sie Pakete und Paketversionen mit der Google Cloud Console oder gcloud auf:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Klicken Sie in der Liste der Repositories auf das entsprechende Repository.

    Auf der Seite Pakete sind die Pakete des Repositorys aufgeführt.

  3. Klicken Sie auf das Paket, um die Versionen des Pakets aufzurufen.

gcloud

Führen Sie den folgenden Befehl aus, um die Pakete in einem Repository aufzulisten:

gcloud artifacts packages list [--repository=REPOSITORY] [--location=LOCATION]

WHERE

  • REPOSITORY ist der Name des Repositorys. Wenn Sie ein Standard-Repository konfiguriert haben, wird bei Weglassen dieses Flags dieses Standard-Repository verwendet.
  • LOCATION ist ein regionaler oder multiregionaler Speicherort. Verwenden Sie dieses Flag, um Repositories an einem bestimmten Speicherort aufzurufen. Wenn Sie einen Standard-Speicherort konfiguriert haben, wird bei Weglassen dieses Flags dieser Standardwert verwendet.

Um die Versionen für ein Paket aufzurufen, führen Sie folgenden Befehl aus:

gcloud artifacts versions list --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION]

Wo

  • PACKAGE ist die ID des Pakets oder die vollqualifizierte Kennzeichnung für das Paket.
  • REPOSITORY ist der Name des Repositorys. Wenn Sie ein Standard-Repository konfiguriert haben, wird bei Weglassen dieses Flags dieses Standard-Repository verwendet.
  • LOCATION ist ein regionaler oder multiregionaler Speicherort. Verwenden Sie dieses Flag, um Repositories an einem bestimmten Speicherort aufzurufen. Wenn Sie einen Standard-Speicherort konfiguriert haben, wird bei Weglassen dieses Flags dieser Standardwert verwendet.

Bei Remote-Repositories sollte die zurückgegebene Liste alle direkten und vorübergehenden Abhängigkeiten enthalten.

Dateien auflisten

Repository-Modi: Standard, Remote

Sie können Dateien in einem Repository, Dateien in allen Versionen eines bestimmten Pakets oder Dateien in einer bestimmten Version eines Pakets auflisten.

Bei allen folgenden Befehlen können Sie eine maximale Anzahl von Dateien festlegen, die zurückgegeben werden sollen. Dazu fügen Sie dem Befehl das Flag --limit hinzu.

So rufen Sie alle Dateien im Standardprojekt, Repository und am Speicherort ab, wenn die Standardwerte konfiguriert sind:

gcloud artifacts files list

Führen Sie den folgenden Befehl aus, um Dateien in einem bestimmten Projekt, Repository und an einem bestimmten Speicherort aufzulisten:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION

So listen Sie Dateien für alle Versionen eines bestimmten Pakets auf:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE

So listen Sie Dateien für eine bestimmte Paketversion auf:

gcloud artifacts files list \
    --project=PROJECT \
    --repository=REPOSITORY \
    --location=LOCATION \
    --package=PACKAGE \
    --version=VERSION

Ersetzen Sie die folgenden Werte:

  • LOCATION ist der regionale oder multiregionale Speicherort für das Repository.
  • PROJECT ist Ihre Google Cloud-Projekt-ID. Wenn die Projekt-ID einen Doppelpunkt (:) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.
  • REPOSITORY ist der Name des Repositorys, in dem das Image gespeichert ist.
  • PACKAGE ist der Name des Pakets.
  • VERSION ist die Version des Pakets.

Beispiele

Beachten Sie die folgenden Paketinformationen:

  • Projekt: my-project
  • Repository: my-repo
  • Speicherort des Repositorys: us-central1
  • Paket: my-app

Mit dem folgenden Befehl werden alle Dateien im Repository my-repo am Standort us-central1 im Standardprojekt aufgelistet:

gcloud artifacts files list \
    --location=us-central1 \
    --repository=my-repo
Mit dem folgenden Befehl werden Dateien in Version 1.0 des Pakets aufgelistet.

gcloud artifacts files list \
    --project=my-project \
    --location=us-central1 \
    --repository=my-repo \
    --package=my-app \
    --version=1.0

Pakete installieren

Repository-Modi: Standard, Remote, virtuell

Verwenden Sie den Befehl pip, um Pakete zu installieren.

Führen Sie den folgenden Befehl aus, um den neuesten stabilen Release eines Pakets zu installieren:

pip install PACKAGE

Bei Standard-Repositories laden Sie ein Paket direkt aus dem Repository herunter.

Für ein Remote-Repository laden Sie eine im Cache gespeicherte Kopie des Pakets und seine Abhängigkeiten herunter. Wenn keine im Cache gespeicherte Kopie vorhanden ist, lädt das Remote-Repository das Paket aus der vorgelagerten Quelle herunter und speichert es im Cache, bevor es an Sie gesendet wird. Sie können prüfen, ob die Remote-Repositories die Pakete aus der übergeordneten Quelle abgerufen haben. Rufen Sie dazu die Liste der Pakete im Repository auf.

Bei einem virtuellen Repository sucht Artifact Registry nach vorgelagerten Repositories nach dem angeforderten Paket.

  • Bei vorgelagerten Remote-Repositories wird das angeforderte Paket heruntergeladen und im Cache gespeichert, wenn keine Cache-Kopie vorhanden ist. Virtuelle Repositories stellen nur angeforderte Pakete bereit und speichern sie nicht.
  • Wenn Sie eine Version anfordern, die in mehr als einem vorgelagerten Repository verfügbar ist, wählt Artifact Registry ein vorgelagertes Repository anhand der für das virtuelle Repository konfigurierten Prioritätseinstellungen aus.

Angenommen, ein virtuelles Repository mit den folgenden Prioritätseinstellungen für vorgelagerte Repositories:

  • main-repo: Priorität wurde auf 100 festgelegt
  • secondary-repo1: Priorität auf 80 festgelegt.
  • secondary-repo2: Priorität auf 80 festgelegt.
  • test-repo: Priorität auf 20 festgelegt.

main-repo hat den höchsten Prioritätswert, sodass das virtuelle Repository immer zuerst sucht.

secondary-repo1 und secondary-repo2 haben die Priorität 80. Wenn ein angefordertes Paket in main-repo nicht verfügbar ist, durchsucht Artifact Registry diese Repositories. Da beide denselben Prioritätswert haben, kann Artifact Registry ein Paket aus einem der beiden Repositories bereitstellen, wenn die Version in beiden vorhanden ist.

test-repo hat den niedrigsten Prioritätswert und stellt ein gespeichertes Artefakt bereit, wenn es in keinem der anderen vorgelagerten Repositories vorhanden ist.

Weitere Informationen

Standardmäßig werden mit pip stabile Versionen eines Pakets installiert und Vorabversionen ignoriert. In PEP 440 ist eine Spezifikation für die Python-Versionskennzeichnung definiert, über die Nutzer an Versionsnummern, einschließlich Vorabversionen, parsen können.

Wenn pre-Release-Versionen enthalten sein sollen, wenn pip nach einem Paket sucht, das installiert werden soll, fügen Sie dem Befehl das Flag --pre hinzu.

pip install --pre PACKAGE

Fügen Sie einen Anforderungsspezifizierer hinzu, um eine erforderliche Version oder einen erforderlichen Versionsbereich anzugeben. Sie können die Versionsanforderung direkt in Ihren Befehl aufnehmen oder eine Anforderungsdatei verwenden.

Dieser Befehl gibt beispielsweise an, dass die Mindestversion von my-package die Entwicklungsversion 1.0.dev0 ist.

pip install --pre my-package>=1.0.dev0

Stabile Releases werden als neuer als Vorabveröffentlichungen betrachtet. Wenn also Version 1.0 im Repository ist, wählt pip Version 1.0 vor einer Vorveröffentlichung aus.

Wenn Sie kein Repository angeben, bestimmt die pip-Konfiguration in pip.conf, wie pip nach dem Paket sucht.

  • Wenn Sie das Artifact Registry-Repository mit der Einstellung index-url konfiguriert haben und keine anderen Paketindexe konfiguriert sind, durchsucht pip nur das Artifact Registry-Repository nach dem Paket.
  • Wenn Sie ein virtuelles Repository verwenden, wählt Artifact Registry die in der Upstream-Richtlinie konfigurierten Prioritäten aus, um ein Paket auszuwählen, wenn mehrere Upstream-Repositories die angeforderte Paketversion haben. Wenn zwei Repositories mit dem Paket dieselbe Priorität haben, wird es von Artifact Registry aus beiden Repositories bereitgestellt.
  • Wenn Sie "pip" mit der Einstellung extra-index-url konfiguriert oder mehrere Paketindexe konfiguriert haben, sucht pip nach pypi.org und anderen konfigurierten Paketindexen und wählt die neueste Version des Pakets aus.

Sie können die Einstellungen index-url oder extra-index-url in Ihrer Datei requirements überschreiben. Sie können für diese Einstellungen auch Flags im pip-Befehl verwenden. Der folgende Befehl überschreibt beispielsweise index-url mit einem Artifact Registry-Repository.

pip install --index-url https://us-east1-python.pkg.dev/my-project/python-repo/simple/ my-package

Weitere Informationen zum Installieren von Paketen finden Sie in der Python-Paketdokumentation.

Pakete und Versionen löschen

Repository-Modi: Standard, Remote

Sie können ein Paket und alle zugehörigen Versionen oder eine bestimmte Version löschen.

  • Gelöschte Pakete können nicht rückgängig gemacht werden.
  • Bei Remote-Repositories wird nur die im Cache gespeicherte Kopie des Pakets gelöscht. Die vorgelagerte Quelle ist davon nicht betroffen. Wenn Sie ein im Cache gespeichertes Paket löschen, wird es von Artifact Registry noch einmal heruntergeladen und im Cache gespeichert, wenn das Repository das nächste Mal eine Anfrage für dieselbe Paketversion erhält.

Bevor Sie ein Paket oder eine Paketversion löschen, prüfen Sie, ob Sie alle wichtigen Abhängigkeiten davon kommuniziert oder behoben haben.

So löschen Sie ein Paket:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Klicken Sie in der Liste der Repositories auf das entsprechende Repository.

    Auf der Seite Pakete sind die Pakete des Repositorys aufgeführt.

  3. Wählen Sie das Paket aus, das Sie löschen möchten.

  4. Klicken Sie auf Löschen.

  5. Klicken Sie im Bestätigungsdialogfeld auf Löschen.

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud artifacts packages delete PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] [--async]

WHERE

  • PACKAGE ist der Name des Pakets im Repository.
  • REPOSITORY ist der Name des Repositorys. Wenn Sie ein Standard-Repository konfiguriert haben, wird bei Weglassen dieses Flags dieses Standard-Repository verwendet.
  • LOCATION ist ein regionaler oder multiregionaler Speicherort. Verwenden Sie dieses Flag, um Repositories an einem bestimmten Speicherort aufzurufen. Wenn Sie einen Standard-Speicherort konfiguriert haben, wird bei Weglassen dieses Flags dieser Standardwert verwendet.
  • --async wird sofort zurückgegeben, ohne auf den Abschluss des Vorgangs zu warten.

So löschen Sie Versionen eines Pakets:

Console

  1. Öffnen Sie in der Google Cloud Console die Seite Repositories.

    Zur Seite „Repositories“

  2. Klicken Sie in der Liste der Repositories auf das entsprechende Repository.

    Auf der Seite Pakete sind die Pakete des Repositorys aufgeführt.

  3. Klicken Sie auf das Paket, um die Versionen des Pakets aufzurufen.

  4. Wählen Sie die Versionen aus, die Sie löschen möchten.

  5. Klicken Sie auf Löschen.

  6. Klicken Sie im Bestätigungsdialogfeld auf Löschen.

gcloud

Führen Sie dazu diesen Befehl aus:

gcloud artifacts versions delete VERSION \
    --package=PACKAGE \
    [--repository=REPOSITORY] [--location=LOCATION] \
    [--async]

WHERE

  • PACKAGE ist der Name des Pakets im Repository.
  • REPOSITORY ist der Name des Repositorys. Wenn Sie ein Standard-Repository konfiguriert haben, wird bei Weglassen dieses Flags dieses Standard-Repository verwendet.
  • LOCATION ist ein regionaler oder multiregionaler Speicherort. Verwenden Sie dieses Flag, um Repositories an einem bestimmten Speicherort aufzurufen. Wenn Sie einen Standard-Speicherort konfiguriert haben, wird bei Weglassen dieses Flags dieser Standardwert verwendet.
  • --async wird sofort zurückgegeben, ohne auf den Abschluss des Vorgangs zu warten.

Nächste Schritte