

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.

# CodeArtifact Mit Python verwenden
<a name="using-python"></a>

In diesen Themen wird beschrieben`pip`, wie Sie den Python-Paketmanager und `twine` das Python-Hilfsprogramm zur Paketveröffentlichung mit verwenden CodeArtifact.

**Topics**
+ [

# Konfigurieren und verwenden Sie Pip mit CodeArtifact
](python-configure-pip.md)
+ [

# Konfigurieren und verwenden Sie Twine mit CodeArtifact
](python-configure-twine.md)
+ [

# Normalisierung von Python-Paketnamen
](python-name-normalization.md)
+ [

# Python-Kompatibilität
](python-compatibility.md)
+ [

# Python-Pakete von Upstreams und externen Verbindungen anfordern
](python-upstream-external-connections-request.md)

# Konfigurieren und verwenden Sie Pip mit CodeArtifact
<a name="python-configure-pip"></a>

[pip](https://pypi.org/project/pip/) ist der Paket-Installer für Python-Pakete. Um Pip zur Installation von Python-Paketen aus Ihrem CodeArtifact Repository zu verwenden, müssen Sie zuerst den Pip-Client mit Ihren CodeArtifact Repository-Informationen und Anmeldeinformationen konfigurieren.

pip kann nur zur Installation von Python-Paketen verwendet werden. Um Python-Pakete zu veröffentlichen, können Sie [Twine](https://pypi.org/project/twine/) verwenden. Weitere Informationen finden Sie unter [Konfigurieren und verwenden Sie Twine mit CodeArtifact](python-configure-twine.md).

## Konfigurieren Sie pip mit dem Befehl `login`
<a name="python-configure-pip-login"></a>

Konfigurieren Sie zunächst Ihre AWS Anmeldeinformationen für die Verwendung mit AWS CLI, wie unter beschrieben[Erste Schritte mit CodeArtifact](getting-started.md). Verwenden Sie dann den CodeArtifact `login` Befehl, um Anmeldeinformationen abzurufen und `pip` mit ihnen zu konfigurieren.

**Anmerkung**  
Wenn Sie auf ein Repository in einer Domain zugreifen, die Sie besitzen, müssen Sie dies nicht angeben`--domain-owner`. Weitere Informationen finden Sie unter [Kontenübergreifende Domänen](domain-overview.md#domain-overview-cross-account).

Führen Sie den folgenden Befehl aus, um Pip zu konfigurieren.

```
aws codeartifact login --tool pip --domain my_domain --domain-owner 111122223333 --repository my_repo
```

 `login`ruft CodeArtifact mithilfe Ihrer AWS Anmeldeinformationen ein Autorisierungstoken ab. Der `login` Befehl wird `pip` für die Verwendung mit konfiguriert, CodeArtifact indem er bearbeitet`~/.config/pip/pip.conf`, `index-url` um den Wert auf das in der `--repository` Option angegebene Repository zu setzen.

Der Standardzeitraum für die Autorisierung nach einem Anruf `login` beträgt 12 Stunden und `login` muss aufgerufen werden, um das Token regelmäßig zu aktualisieren. Weitere Hinweise zu dem mit dem `login` Befehl erstellten Autorisierungstoken finden Sie unter[Mit dem Befehl erstellte Tokens `login`](tokens-authentication.md#auth-token-login).

## Konfigurieren Sie pip ohne den Login-Befehl
<a name="python-configure-without-pip"></a>

 Wenn Sie den `login` Befehl nicht zur Konfiguration verwenden können`pip`, können Sie. `pip config`

1. Verwenden Sie den AWS CLI , um ein neues Autorisierungstoken abzurufen.
**Anmerkung**  
Wenn Sie auf ein Repository in einer Domain zugreifen, die Sie besitzen, müssen Sie das `--domain-owner` nicht angeben. Weitere Informationen finden Sie unter [Kontenübergreifende Domänen](domain-overview.md#domain-overview-cross-account).

   ```
   CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
   ```

1. Dient `pip config` zum Festlegen der CodeArtifact Registrierungs-URL und der Anmeldeinformationen. Mit dem folgenden Befehl wird nur die aktuelle Umgebungskonfigurationsdatei aktualisiert. Um die systemweite Konfigurationsdatei zu aktualisieren, ersetzen Sie sie durch`site`. `global`

   ```
   pip config set site.index-url https://aws:$CODEARTIFACT_AUTH_TOKEN@my_domain-111122223333.d.codeartifact.region.amazonaws.com/pypi/my_repo/simple/
   ```
**Anmerkung**  
Um einen Dual-Stack-Endpunkt zu verwenden, verwenden Sie den Endpunkt. `codeartifact.region.on.aws`

**Wichtig**  
Die Registrierungs-URL muss mit einem Schrägstrich (/) enden. Andernfalls können Sie keine Verbindung zum Repository herstellen.

**Beispiel für eine Pip-Konfigurationsdatei**

Im Folgenden finden Sie ein Beispiel für eine `pip.conf` Datei nach dem Festlegen der CodeArtifact Registrierungs-URL und der Anmeldeinformationen.

```
[global]
index-url = https://aws:eyJ2ZX...@my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/pypi/my_repo/simple/
```

## Führen Sie pip aus
<a name="python-run-pip"></a>

Um `pip` Befehle auszuführen, müssen Sie `pip` mit CodeArtifact konfigurieren. Weitere Informationen finden Sie in der folgenden Dokumentation.

1. Folgen Sie den Schritten im [Einrichtung mit AWS CodeArtifact](get-set-up-for-codeartifact.md) Abschnitt, um Ihr AWS Konto, Ihre Tools und Berechtigungen zu konfigurieren.

1. Folgen Sie zur Konfiguration den Schritten `twine` unter[Konfigurieren und verwenden Sie Twine mit CodeArtifact](python-configure-twine.md).

Unter der Annahme, dass ein Paket in Ihrem Repository oder einem seiner Upstream-Repositorys vorhanden ist, können Sie es mit `pip install` installieren. Verwenden Sie beispielsweise den folgenden Befehl, um das `requests` Paket zu installieren.

```
pip install requests
```

Verwenden Sie die `-i` Option, um vorübergehend zur Installation von Paketen von [https://pypi.org](https://pypi.org) statt von Ihrem CodeArtifact Repository zurückzukehren.

```
pip install -i https://pypi.org/simple requests
```

# Konfigurieren und verwenden Sie Twine mit CodeArtifact
<a name="python-configure-twine"></a>

[Twine](https://pypi.org/project/twine/) ist ein Hilfsprogramm zur Paketveröffentlichung für Python-Pakete. Um Twine zu verwenden, um Python-Pakete in Ihrem CodeArtifact Repository zu veröffentlichen, müssen Sie Twine zuerst mit Ihren CodeArtifact Repository-Informationen und Anmeldeinformationen konfigurieren.

Twine kann nur zum Veröffentlichen von Python-Paketen verwendet werden. Um Python-Pakete zu installieren, können Sie [pip](https://pypi.org/project/pip/) verwenden. Weitere Informationen finden Sie unter [Konfigurieren und verwenden Sie Pip mit CodeArtifact](python-configure-pip.md).

## Konfigurieren Sie Twine mit dem Befehl `login`
<a name="python-configure-twine-login"></a>

Konfigurieren Sie zunächst Ihre AWS Anmeldeinformationen für die AWS CLI, wie unter beschrieben[Erste Schritte mit CodeArtifact](getting-started.md). Verwenden Sie dann den CodeArtifact `login` Befehl, um Anmeldeinformationen abzurufen und Twine damit zu konfigurieren.

**Anmerkung**  
Wenn Sie auf ein Repository in einer Domain zugreifen, die Sie besitzen, müssen Sie dies nicht angeben. `--domain-owner` Weitere Informationen finden Sie unter [Kontenübergreifende Domänen](domain-overview.md#domain-overview-cross-account).

Führen Sie den folgenden Befehl aus, um Twine zu konfigurieren.

```
aws codeartifact login --tool twine --domain my_domain --domain-owner 111122223333 --repository my_repo
```

 `login`ruft CodeArtifact mithilfe Ihrer AWS Anmeldeinformationen ein Autorisierungstoken ab. Der `login` Befehl konfiguriert Twine für die Verwendung mit, CodeArtifact indem es bearbeitet wird`~/.pypirc`, um das in der `--repository` Option angegebene Repository mit Anmeldeinformationen hinzuzufügen.

Der Standardzeitraum für die Autorisierung nach einem Anruf `login` beträgt 12 Stunden und `login` muss aufgerufen werden, um das Token regelmäßig zu aktualisieren. Weitere Hinweise zu dem mit dem `login` Befehl erstellten Autorisierungstoken finden Sie unter[Mit dem Befehl erstellte Tokens `login`](tokens-authentication.md#auth-token-login).

## Konfigurieren Sie Twine ohne den Befehl `login`
<a name="python-configure-twine-without-login"></a>

 Wenn Sie den `login` Befehl nicht zur Konfiguration von Twine verwenden können, können Sie die `~/.pypirc` Datei- oder Umgebungsvariablen verwenden. Um die `~/.pypirc` Datei zu verwenden, fügen Sie ihr die folgenden Einträge hinzu. Das Passwort muss ein Authentifizierungstoken sein, das von der `get-authorization-token` API abgerufen wurde.

```
[distutils]
index-servers =
 codeartifact
[codeartifact]
repository = https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/pypi/my_repo/
password = auth-token
username = aws
```

**Anmerkung**  
Um einen Dual-Stack-Endpunkt zu verwenden, verwenden Sie den Endpunkt. `codeartifact.region.on.aws`

Gehen Sie wie folgt vor, um Umgebungsvariablen zu verwenden.

**Anmerkung**  
Wenn Sie auf ein Repository in einer Domäne zugreifen, die Sie besitzen, müssen Sie das nicht angeben`--domain-owner`. Weitere Informationen finden Sie unter [Kontenübergreifende Domänen](domain-overview.md#domain-overview-cross-account).

```
export TWINE_USERNAME=aws
export TWINE_PASSWORD=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text`
export TWINE_REPOSITORY_URL=`aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format pypi --query repositoryEndpoint --output text`
```

## Führen Sie Twine aus
<a name="python-run-twine"></a>

Bevor Sie Twine zum Veröffentlichen von Python-Paket-Assets verwenden, müssen Sie zunächst CodeArtifact Berechtigungen und Ressourcen konfigurieren.

1. Folgen Sie den Schritten im [Einrichtung mit AWS CodeArtifact](get-set-up-for-codeartifact.md) Abschnitt, um Ihr AWS Konto, Ihre Tools und Berechtigungen zu konfigurieren.

1. Konfigurieren Sie Twine, indem Sie den Schritten unter [Konfigurieren Sie Twine mit dem Befehl `login`](#python-configure-twine-login) oder [Konfigurieren Sie Twine ohne den Befehl `login`](#python-configure-twine-without-login) folgen.

Nachdem Sie Twine konfiguriert haben, können Sie Befehle ausführen`twine`. Verwenden Sie den folgenden Befehl, um Python-Paket-Assets zu veröffentlichen.

```
twine upload --repository codeartifact mypackage-1.0.tgz
```

Informationen zum Erstellen und Verpacken Ihrer Python-Anwendung finden Sie unter [Generieren von Distributionsarchiven](https://packaging.python.org/tutorials/packaging-projects/#generating-distribution-archives) auf der Python Packaging Authority-Website.

# Normalisierung von Python-Paketnamen
<a name="python-name-normalization"></a>

CodeArtifact normalisiert Paketnamen, bevor sie gespeichert werden, was bedeutet, dass sich die Paketnamen in CodeArtifact möglicherweise von dem Namen unterscheiden, der bei der Veröffentlichung des Pakets angegeben wurde.

Bei Python-Paketen wird der Paketname bei der Normalisierung in Kleinbuchstaben geschrieben und alle Instanzen der Zeichen`.`,`-`, und `_` werden durch ein einzelnes Zeichen ersetzt. `-` Die Paketnamen `pigeon_cli` und und `pigeon.cli` werden also normalisiert und gespeichert als. `pigeon-cli` Der nicht normalisierte Name kann von pip und twine verwendet werden, aber der normalisierte Name muss in CodeArtifact CLI- oder API-Anfragen (wie) und in verwendet werden. `list-package-versions` ARNs Weitere Informationen zur Normalisierung von Python-Paketnamen finden Sie unter [PEP 503](https://www.python.org/dev/peps/pep-0503/#normalized-names) in der Python-Dokumentation.

# Python-Kompatibilität
<a name="python-compatibility"></a>

CodeArtifact unterstützt PyPIs oder nicht. `XML-RPC` `JSON` APIs

CodeArtifact unterstützt PyPIs `Legacy` APIs, außer der API. `simple` CodeArtifact Unterstützt zwar nicht den `/simple/` API-Endpunkt, aber den `/simple/<project>/` Endpunkt.

Weitere Informationen finden Sie im Folgenden im GitHub Repository der Python Packaging Authority.
+ [XML-RPC-API](https://github.com/pypi/warehouse/blob/main/docs/dev/api-reference/xml-rpc.rst)
+ [JSON-API](https://github.com/pypi/warehouse/blob/main/docs/dev/api-reference/json.rst)
+ [Legacy-API](https://github.com/pypi/warehouse/blob/main/docs/dev/api-reference/legacy.rst)

## Unterstützung für Pip-Befehle
<a name="pip-command-support"></a>

In den folgenden Abschnitten werden die Pip-Befehle zusammengefasst, die von CodeArtifact Repositorys unterstützt werden, zusätzlich zu bestimmten Befehlen, die nicht unterstützt werden.

**Topics**
+ [

### Unterstützte Befehle, die mit einem Repository interagieren
](#supported-pip-commands-that-interact-with-a-repository)
+ [

### Unterstützte clientseitige Befehle
](#supported-pip-client-side-commands)

### Unterstützte Befehle, die mit einem Repository interagieren
<a name="supported-pip-commands-that-interact-with-a-repository"></a>

In diesem Abschnitt sind `pip` Befehle aufgeführt, bei denen der `pip` Client eine oder mehrere Anfragen an die Registry stellt, mit der er konfiguriert wurde. Es wurde überprüft, ob diese Befehle korrekt funktionieren, wenn sie in einem CodeArtifact Repository aufgerufen werden.


****  

| Befehl | Description | 
| --- | --- | 
|   [install](https://pip.pypa.io/en/stable/reference/pip_install/)   |  Installiere Pakete.  | 
|   [herunterladen](https://pip.pypa.io/en/stable/reference/pip_download/)   |  Pakete herunterladen.  | 

CodeArtifact implementiert nicht`pip search`. Wenn Sie `pip` mit einem CodeArtifact Repository konfiguriert haben, `pip search` werden beim Ausführen Pakete von [PyPI](https://pypi.org/) gesucht und angezeigt.

### Unterstützte clientseitige Befehle
<a name="supported-pip-client-side-commands"></a>

Diese Befehle erfordern keine direkte Interaktion mit einem Repository und müssen daher auch CodeArtifact nicht unterstützt werden.


****  

| Befehl | Description | 
| --- | --- | 
|   [deinstallieren](https://pip.pypa.io/en/stable/reference/pip_uninstall/)   |  Pakete deinstallieren.  | 
|   [einfrieren](https://pip.pypa.io/en/stable/reference/pip_freeze/)   |  Gibt installierte Pakete im Anforderungsformat aus.  | 
|   [Liste](https://pip.pypa.io/en/stable/reference/pip_list/)   |  Listet die installierten Pakete auf.  | 
|   [sh](https://pip.pypa.io/en/stable/reference/pip_show/)ow   |  Zeigt Informationen über installierte Pakete an.  | 
|   [überprüfen](https://pip.pypa.io/en/stable/reference/pip_check/)   |  Stellen Sie sicher, dass die installierten Pakete kompatible Abhängigkeiten haben.  | 
|   [config](https://pip.pypa.io/en/stable/reference/pip_config/)   |  Verwalten Sie die lokale und globale Konfiguration.  | 
|   [Rad](https://pip.pypa.io/en/stable/reference/pip_wheel/)   |  Baue Räder nach deinen Anforderungen.  | 
|   [Hash](https://pip.pypa.io/en/stable/reference/pip_hash/)   |  Berechnet die Hashes von Paketarchiven.  | 
|   [Fertigstellung](https://pip.pypa.io/en/stable/user_guide/#command-completion)   |  Hilft bei der Befehlsvervollständigung.  | 
|   [debug](https://pip.pypa.io/en/stable/reference/pip_debug/)   |  Zeigt Informationen an, die für das Debuggen nützlich sind.  | 
|  help  |  Zeigt Hilfe für Befehle an.  | 

# Python-Pakete von Upstreams und externen Verbindungen anfordern
<a name="python-upstream-external-connections-request"></a>

Wenn Sie eine Python-Paketversion von [pypi.org](https://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 wird`pip 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
<a name="python-yanked-versions"></a>

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\$1592.](https://peps.python.org/pep-0592/)

Wenn eine Paketversion in ursprünglich von einer externen Verbindung zu [pypi.org](https://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
<a name="test-yanked-version"></a>

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](https://pypi.org/) der Paketversion aufrufen. `https://pypi.org/project/packageName/packageVersion/`

### Den Sperrstatus für private Pakete festlegen
<a name="yanked-private-packages"></a>

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?
<a name="no-yanked-metadata"></a>

 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](https://pypi.org/) 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](external-connection.md#removing-an-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](package-origin-controls.md) 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 setzen`Unlisted`, werden gelöschte Metadaten und Assets der Paketversion nicht aktualisiert. Ähnlich verhält es sich, wenn Sie eine bestimmte Paketversion abrufen (sagen wir`torch 2.0.1`) und dieselbe Paketversion in einem Upstream-Repository mit einem Status vorhanden ist, der nicht `Published` oder ist`Unlisted`, 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 herunter`torch 2.0.1`, z. B. mit einem Webbrowser`torch-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.