Python-Pakete verwalten

Auf dieser Seite wird beschrieben, wie Sie Python-Pakete und Paketversionen hinzufügen, aufrufen 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 die Version mit dem Befehl prüfen:

    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 im Google Cloud-Tutorial zum Einrichten von Python.

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

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

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die folgenden IAM-Rollen für das Repository zuzuweisen, um die Berechtigungen zu erhalten, die Sie zum Verwalten von Paketen benötigen:

Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

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

Pakete hinzufügen

Repository-Modi: standard

Beim Erstellen eines Python-Projekts werden Verteilungsdateien in einem dist gespeichert in Ihrem Projekt. Anschließend können Sie mit Twine Pakete in eine Standard-Repository.

Wir empfehlen die folgenden Best Practices für Ihre Pakete:

  • Verwende eindeutige Namen für deine privaten Pakete, damit sie nicht mit dem Paket übereinstimmen auf pypi.org, vor allem, wenn Ihre Die pip-Konfiguration umfasst mehrere Paketindexe.
  • Verwenden Sie die Spezifikation der Versionskennung in PEP 440. für die Versionsnummern des Pakets. Standardmäßig installiert pip nur stabile Releases. Anhand der Versionskennungsspezifikation werden stabile Versionen von Pre-Release-Versionen unterschieden und alle Anforderungen an die zu installierende Version geparst.

So fügen Sie ein Paket hinzu:

  1. Installieren Sie Twine.

    pip install twine
    
  2. Wechseln Sie in das Verzeichnis Ihres Python-Projekts.

  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 auf: oder gcloud:

Console

  1. Öffnen Sie in der 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]

Dabei gilt:

  • 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 regional oder multiregional Standort 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 regional oder multiregional Standort Verwenden Sie dieses Flag, um Repositories an einem bestimmten Speicherort aufzurufen. Wenn Sie default-Speicherort konfiguriert haben, können Sie dieses Flag weglassen, die Standardeinstellung.

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

Dateien auflisten

Repository-Modi: Standard, Remote

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

Für alle folgenden Befehle 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 listen Sie alle Dateien im Standardprojekt, im Standard-Repository und am Standard-Speicherort auf, wenn die Standardwerte konfiguriert sind:

gcloud artifacts files list

Führen Sie den folgenden Befehl aus, um Dateien in einem bestimmten Projekt, Repository und 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: die regional oder multiregional Speicherort des Repositorys.
  • PROJECT: Ihre Google Cloud-Projekt-ID. Wenn die Projekt-ID einen Doppelpunkt (`:`) enthält, finden Sie weitere Informationen unter Domain-übergreifende Projekte.
  • REPOSITORY: der Name des Repositorys, in dem sich das Image befindet gespeichert ist.
  • PACKAGE: der Name des Pakets.
  • VERSION: die Version des Pakets.

Beispiele

Sehen Sie sich die folgenden Paketinformationen an:

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

Mit dem folgenden Befehl werden alle Dateien im Repository my-repo im Speicherort us-west1 innerhalb des Standardprojekts:

gcloud artifacts files list \
    --location=us-west1 \
    --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-west1 \
    --repository=my-repo \
    --package=my-app \
    --version=1.0

Pakete installieren

Repository-Modi: Standard, Remote, Virtual

Pakete werden mit dem Befehl pip installiert.

Führen Sie den folgenden Befehl aus, um die neueste stabile Version eines Pakets zu installieren:

pip install PACKAGE

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

Bei einem Remote-Repository laden Sie eine im Cache gespeicherte Kopie des Pakets und seiner Abhängigkeiten herunter. Wenn keine Cache-Kopie vorhanden ist, lädt das Remote-Repository das Paket von der Upstream-Quelle herunter und speichert es im Cache, bevor es an Sie gesendet wird. Sie können prüfen, ob das Remote-Repository die Pakete aus dem Upstream-Quelle durch Aufrufen der Liste der Pakete im Repository.

Bei einem virtuellen Repository sucht Artifact Registry in Upstream-Repositories nach dem angeforderten Paket.

  • Upstream-Remote-Repositories laden das angeforderte Paket herunter und speichern es im Cache, wenn eine im Cache gespeicherte Kopie nicht vorhanden ist. Virtuelle Repositories liefern nur angeforderte speichern sie diese nicht.
  • Wenn Sie eine Version anfordern, die in mehreren Upstream-Repositories verfügbar ist, wählt Artifact Registry basierend auf den für das virtuelle Repository konfigurierten Prioritätseinstellungen ein Upstream-Repository aus.

Angenommen, Sie haben ein virtuelles Repository mit den folgenden Prioritätseinstellungen für Upstream-Repositories:

  • main-repo: Priorität 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 im virtuellen Repository immer zuerst danach gesucht wird.

Sowohl secondary-repo1 als auch secondary-repo2 haben die Priorität 80. Wenn ein angefordertes Paket in main-repo nicht verfügbar ist, sucht Artifact Registry als Nächstes in diesen Repositories. Da beide den gleichen Prioritätswert haben, Artifact Registry kann ein Paket aus beiden Repositories bereitstellen wenn die Version in beiden verfügbar ist.

test-repo hat den niedrigsten Prioritätswert und stellt ein gespeichertes Artefakt bereit, wenn keines der anderen vorgelagerten Repositories.

Weitere Informationen

Standardmäßig installiert pip stabile Versionen eines Pakets und ignoriert Vorabversionen. PEP 440 definiert die Python-Versions-ID-Spezifikation, mit der Pip-Nutzer Versionsnummern parsen können, einschließlich Vorabversionen.

Wenn Sie bei der Suche nach einem zu installierenden Paket auch Vorabversionen berücksichtigen möchten, fügen Sie dem Befehl das Flag --pre hinzu.

pip install --pre PACKAGE

Wenn Sie eine erforderliche Version oder einen erforderlichen Versionsbereich angeben möchten, fügen Sie einen Anforderungsspezifizierer. Sie können die Versionsanforderung direkt in den Befehl aufnehmen oder eine Anforderungendatei verwenden.

Mit diesem Befehl wird beispielsweise angegeben, dass die Mindestversion von my-package die Entwicklungsversion 1.0.dev0 ist.

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

Stabile Releases gelten als neuer als Vorabversionen. Wenn also Version 1.0 im Repository vorhanden ist, wählt pip Version 1.0 anstelle einer Vorabversion aus.

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

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

Sie können die index-url- oder extra-index-url-Einstellungen in der Datei requirements überschreiben. Sie können auch Flags für diese Einstellungen in Ihrem Pip-Befehl verwenden. Dieser Befehl überschreibt 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 Dokumentation zur Python-Paketerstellung

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.

  • Wenn Sie ein Paket löschen, kann dieser Vorgang nicht mehr 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 beim nächsten Mal, wenn das Repository eine Anfrage für dieselbe Paketversion erhält, noch einmal heruntergeladen und im Cache gespeichert.

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 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 folgenden Befehl aus:

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

Dabei gilt:

  • 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 regional oder multiregional Standort Verwenden Sie dieses Flag, um Repositories an einem bestimmten Speicherort aufzurufen. Wenn Sie default-Speicherort konfiguriert haben, können Sie dieses Flag weglassen, die Standardeinstellung.
  • --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 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 folgenden Befehl aus:

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

Dabei gilt:

  • 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 regional oder multiregional Standort 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