

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menggunakan CodeArtifact dengan Python
<a name="using-python"></a>

Topik-topik ini menjelaskan cara menggunakan`pip`, manajer paket Python, dan`twine`, utilitas penerbitan paket Python, dengan. CodeArtifact

**Topics**
+ [

# Konfigurasikan dan gunakan pip dengan CodeArtifact
](python-configure-pip.md)
+ [

# Konfigurasikan dan gunakan benang dengan CodeArtifact
](python-configure-twine.md)
+ [

# Normalisasi nama paket Python
](python-name-normalization.md)
+ [

# Kompatibilitas Python
](python-compatibility.md)
+ [

# Meminta paket Python dari upstream dan koneksi eksternal
](python-upstream-external-connections-request.md)

# Konfigurasikan dan gunakan pip dengan CodeArtifact
<a name="python-configure-pip"></a>

[pip](https://pypi.org/project/pip/) adalah penginstal paket untuk paket Python. Untuk menggunakan pip untuk menginstal paket Python dari repositori Anda, CodeArtifact Anda harus terlebih dahulu mengkonfigurasi klien pip dengan CodeArtifact informasi repositori dan kredenal Anda.

pip hanya dapat digunakan untuk menginstal paket Python. [Untuk mempublikasikan paket Python, Anda dapat menggunakan benang.](https://pypi.org/project/twine/) Untuk informasi selengkapnya, lihat [Konfigurasikan dan gunakan benang dengan CodeArtifact](python-configure-twine.md).

## Konfigurasikan pip dengan perintah `login`
<a name="python-configure-pip-login"></a>

Pertama, konfigurasikan AWS kredensil Anda untuk digunakan dengan AWS CLI, seperti yang dijelaskan dalam. [Memulai dengan CodeArtifact](getting-started.md) Kemudian, gunakan CodeArtifact `login` perintah untuk mengambil kredensil dan mengkonfigurasinya`pip`.

**catatan**  
Jika Anda mengakses repositori di domain milik Anda, Anda tidak perlu menyertakan `--domain-owner`. Untuk informasi selengkapnya, lihat [Domain lintas akun](domain-overview.md#domain-overview-cross-account).

Untuk mengkonfigurasi pip, jalankan perintah berikut.

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

 `login`mengambil token otorisasi dari CodeArtifact menggunakan kredensil Anda AWS . `login`Perintah akan mengkonfigurasi `pip` untuk digunakan CodeArtifact dengan mengedit `~/.config/pip/pip.conf` untuk mengatur `index-url` ke repositori yang ditentukan oleh opsi. `--repository`

Periode otorisasi default setelah memanggil `login` adalah 12 jam, dan `login` harus dipanggil untuk menyegarkan token secara berkala. Untuk informasi selengkapnya tentang token otorisasi yang dibuat dengan perintah `login`, lihat [Token dibuat dengan perintah `login`](tokens-authentication.md#auth-token-login).

## Mengonfigurasi pip tanpa perintah login
<a name="python-configure-without-pip"></a>

 Jika Anda tidak dapat menggunakan perintah `login` untuk mengonfigurasi `pip`, Anda dapat menggunakan `pip config`.

1. Gunakan AWS CLI untuk mengambil token otorisasi baru.
**catatan**  
Jika Anda mengakses repositori di domain yang Anda miliki, Anda tidak perlu menyertakan `--domain-owner`. Untuk informasi selengkapnya, lihat [Domain lintas akun](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. Gunakan `pip config` untuk mengatur URL CodeArtifact registri dan kredensialnya. Perintah berikut akan memperbarui file konfigurasi lingkungan saat ini saja. Untuk memperbarui file konfigurasi seluruh sistem, ganti `site` dengan. `global`

   ```
   pip config set site.index-url https://aws:$CODEARTIFACT_AUTH_TOKEN@my_domain-111122223333.d.codeartifact.region.amazonaws.com/pypi/my_repo/simple/
   ```
**catatan**  
Untuk menggunakan endpoint dualstack, gunakan endpoint. `codeartifact.region.on.aws`

**penting**  
URL registri harus diakhiri dengan garis miring (/). Jika tidak, Anda tidak dapat terhubung ke repositori.

**Contoh file konfigurasi pip**

Berikut ini adalah contoh `pip.conf` file setelah mengatur URL CodeArtifact registri dan kredensialnya.

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

## Menjalankan pip
<a name="python-run-pip"></a>

Untuk menjalankan `pip` perintah, Anda harus mengkonfigurasi `pip` dengan CodeArtifact. Untuk informasi selengkapnya, lihat dokumentasi berikut.

1. Ikuti langkah-langkah di [Menyiapkan dengan AWS CodeArtifact](get-set-up-for-codeartifact.md) bagian untuk mengonfigurasi AWS akun, alat, dan izin Anda.

1. Konfigurasi `twine` dengan mengikuti langkah-langkah di [Konfigurasikan dan gunakan benang dengan CodeArtifact](python-configure-twine.md).

Dengan asumsi bahwa sebuah paket ada dalam repositori Anda atau salah satu repositori hulu, Anda dapat menginstalnya dengan `pip install`. Misalnya, gunakan perintah berikut untuk menginstal paket `requests`.

```
pip install requests
```

Gunakan `-i` opsi untuk sementara kembali ke menginstal paket dari [https://pypi.org alih-alih repositori](https://pypi.org) Anda CodeArtifact .

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

# Konfigurasikan dan gunakan benang dengan CodeArtifact
<a name="python-configure-twine"></a>

[twine](https://pypi.org/project/twine/) adalah utilitas penerbitan paket untuk paket Python. Untuk menggunakan benang untuk mempublikasikan paket Python ke repositori Anda, CodeArtifact Anda harus terlebih dahulu mengkonfigurasi benang dengan CodeArtifact informasi repositori dan kredensialnya.

twine hanya dapat digunakan untuk mempublikasikan paket Python. [Untuk menginstal paket Python, Anda dapat menggunakan pip.](https://pypi.org/project/pip/) Untuk informasi selengkapnya, lihat [Konfigurasikan dan gunakan pip dengan CodeArtifact](python-configure-pip.md).

## Konfigurasikan benang dengan perintah `login`
<a name="python-configure-twine-login"></a>

Pertama, konfigurasikan AWS kredensil Anda untuk digunakan dengan AWS CLI, seperti yang dijelaskan dalam. [Memulai dengan CodeArtifact](getting-started.md) Kemudian, gunakan CodeArtifact `login` perintah untuk mengambil kredensil dan mengkonfigurasi benang dengan mereka.

**catatan**  
Jika Anda mengakses repositori di domain milik Anda, Anda tidak perlu menyertakan `--domain-owner`. Untuk informasi selengkapnya, lihat [Domain lintas akun](domain-overview.md#domain-overview-cross-account).

Untuk mengkonfigurasi benang, jalankan perintah berikut.

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

 `login`mengambil token otorisasi dari CodeArtifact menggunakan kredensil Anda AWS . `login`Perintah mengkonfigurasi benang untuk digunakan dengan CodeArtifact mengedit `~/.pypirc` untuk menambahkan repositori yang ditentukan oleh opsi dengan kredensil. `--repository`

Periode otorisasi default setelah memanggil `login` adalah 12 jam, dan `login` harus dipanggil untuk menyegarkan token secara berkala. Untuk informasi selengkapnya tentang token otorisasi yang dibuat dengan perintah `login`, lihat [Token dibuat dengan perintah `login`](tokens-authentication.md#auth-token-login).

## Konfigurasikan benang tanpa perintah `login`
<a name="python-configure-twine-without-login"></a>

 Jika Anda tidak dapat menggunakan `login` perintah untuk mengkonfigurasi benang, Anda dapat menggunakan variabel `~/.pypirc` file atau lingkungan. Untuk menggunakan file `~/.pypirc`, tambahkan entri berikut ke file. Kata sandi harus berupa token auth yang diperoleh oleh API `get-authorization-token`.

```
[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
```

**catatan**  
Untuk menggunakan endpoint dualstack, gunakan endpoint. `codeartifact.region.on.aws`

Untuk menggunakan variabel lingkungan, lakukan hal berikut.

**catatan**  
Jika Anda mengakses repositori di domain yang Anda miliki, Anda tidak perlu menyertakan `--domain-owner`. Untuk informasi selengkapnya, lihat [Domain lintas akun](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`
```

## Menjalankan twine
<a name="python-run-twine"></a>

Sebelum menggunakan benang untuk menerbitkan aset paket Python, Anda harus terlebih dahulu CodeArtifact mengkonfigurasi izin dan sumber daya.

1. Ikuti langkah-langkah di [Menyiapkan dengan AWS CodeArtifact](get-set-up-for-codeartifact.md) bagian untuk mengonfigurasi AWS akun, alat, dan izin Anda.

1. Konfigurasikan benang dengan mengikuti langkah-langkah di [Konfigurasikan benang dengan perintah `login`](#python-configure-twine-login) atau[Konfigurasikan benang tanpa perintah `login`](#python-configure-twine-without-login).

Setelah Anda mengkonfigurasi benang, Anda dapat menjalankan `twine` perintah. Gunakan perintah berikut untuk memublikasikan aset paket Python.

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

Untuk informasi tentang cara membangun dan mengemas aplikasi Python Anda, lihat [Generating Distribution Archives](https://packaging.python.org/tutorials/packaging-projects/#generating-distribution-archives) di situs web Python Packaging Authority.

# Normalisasi nama paket Python
<a name="python-name-normalization"></a>

CodeArtifact menormalkan nama paket sebelum menyimpannya, yang berarti nama paket CodeArtifact mungkin berbeda dari nama yang diberikan saat paket diterbitkan.

Untuk paket Python, saat melakukan normalisasi nama paket diberi huruf kecil dan semua instance karakter`.`,`-`, dan `_` diganti dengan satu karakter. `-` Jadi nama paket `pigeon_cli` dan `pigeon.cli` dinormalisasi dan disimpan sebagai`pigeon-cli`. Nama yang tidak dinormalisasi dapat digunakan oleh pip dan benang tetapi nama yang dinormalisasi harus digunakan dalam permintaan CodeArtifact CLI atau API (seperti) dan di. `list-package-versions` ARNs Untuk informasi selengkapnya tentang normalisasi nama paket Python, lihat [PEP 503](https://www.python.org/dev/peps/pep-0503/#normalized-names) dalam dokumentasi Python.

# Kompatibilitas Python
<a name="python-compatibility"></a>

CodeArtifact tidak mendukung PyPI `XML-RPC` atau `JSON` APIs.

CodeArtifact mendukung PyPI `Legacy` APIs, kecuali `simple` API. Meskipun CodeArtifact tidak mendukung titik akhir `/simple/` API, itu mendukung titik `/simple/<project>/` akhir.

Untuk informasi lebih lanjut, lihat berikut ini pada repositori Python Packaging Authority. GitHub
+ [XML-RPC API](https://github.com/pypi/warehouse/blob/main/docs/dev/api-reference/xml-rpc.rst)
+ [API JSON](https://github.com/pypi/warehouse/blob/main/docs/dev/api-reference/json.rst)
+ [API Legacy](https://github.com/pypi/warehouse/blob/main/docs/dev/api-reference/legacy.rst)

## dukungan perintah pip
<a name="pip-command-support"></a>

Bagian berikut merangkum perintah pip yang didukung, oleh CodeArtifact repositori, selain perintah tertentu yang tidak didukung.

**Topics**
+ [

### Perintah yang didukung yang berinteraksi dengan repositori
](#supported-pip-commands-that-interact-with-a-repository)
+ [

### Perintah sisi klien yang didukung
](#supported-pip-client-side-commands)

### Perintah yang didukung yang berinteraksi dengan repositori
<a name="supported-pip-commands-that-interact-with-a-repository"></a>

Bagian ini berisi daftar `pip` tempat klien `pip` membuat satu atau beberapa permintaan ke registri yang telah dikonfigurasi. Perintah-perintah ini telah diverifikasi untuk berfungsi dengan benar ketika dipanggil terhadap CodeArtifact repositori.


****  

| Perintah | Deskripsi | 
| --- | --- | 
|   [menginstal](https://pip.pypa.io/en/stable/reference/pip_install/)   |  Menginstal paket.  | 
|   [Unduh](https://pip.pypa.io/en/stable/reference/pip_download/)   |  Mengunduh paket.  | 

CodeArtifact tidak mengimplementasikan`pip search`. [Jika Anda telah mengonfigurasi `pip` dengan CodeArtifact repositori, menjalankan `pip search` akan mencari dan menampilkan paket dari PyPI.](https://pypi.org/)

### Perintah sisi klien yang didukung
<a name="supported-pip-client-side-commands"></a>

Perintah ini tidak memerlukan interaksi langsung dengan repositori, jadi CodeArtifact tidak perlu melakukan apa pun untuk mendukungnya.


****  

| Perintah | Deskripsi | 
| --- | --- | 
|   [hapus instalan](https://pip.pypa.io/en/stable/reference/pip_uninstall/)   |  Meng-uninstall paket.  | 
|   [membekukan](https://pip.pypa.io/en/stable/reference/pip_freeze/)   |  Output paket terinstal dalam format persyaratan.  | 
|   [daftar](https://pip.pypa.io/en/stable/reference/pip_list/)   |  Daftar paket terinstal.  | 
|   [menunjukkan](https://pip.pypa.io/en/stable/reference/pip_show/)   |  Menampilkan informasi tentang paket terinstal.  | 
|   [periksa](https://pip.pypa.io/en/stable/reference/pip_check/)   |  Memverifikasi apakah paket terinstal memiliki dependensi yang kompatibel.  | 
|   [konfigurasi](https://pip.pypa.io/en/stable/reference/pip_config/)   |  Mengelola konfigurasi lokal dan global.  | 
|   [roda](https://pip.pypa.io/en/stable/reference/pip_wheel/)   |  Membangun wheel dari kebutuhan Anda.  | 
|   [hash](https://pip.pypa.io/en/stable/reference/pip_hash/)   |  Menghitung hash dari arsip paket.  | 
|   [penyelesaian](https://pip.pypa.io/en/stable/user_guide/#command-completion)   |  Membantu penyelesaian perintah.  | 
|   [debug](https://pip.pypa.io/en/stable/reference/pip_debug/)   |  Menampilkan informasi yang berguna untuk debugging.  | 
|  help  |  Menampilkan bantuan untuk perintah.  | 

# Meminta paket Python dari upstream dan koneksi eksternal
<a name="python-upstream-external-connections-request"></a>

Saat mengimpor versi paket Python [dari](https://pypi.org/) pypi.org CodeArtifact , akan mengimpor semua aset dalam versi paket itu. Sementara sebagian besar paket Python berisi sejumlah kecil aset, beberapa berisi lebih dari 100 aset, biasanya untuk mendukung beberapa arsitektur perangkat keras dan interpreter Python.

Adalah umum untuk aset baru untuk dipublikasikan ke pypi.org untuk versi paket yang ada. Misalnya, beberapa proyek menerbitkan aset baru ketika versi baru Python dirilis. Ketika paket Python diinstal dari CodeArtifact with`pip install`, versi paket yang disimpan dalam CodeArtifact repositori diperbarui untuk mencerminkan kumpulan aset terbaru dari pypi.org.

Demikian pula, jika aset baru tersedia untuk versi paket di repositori upstream yang tidak ada di CodeArtifact repositori saat ini, mereka akan disimpan di CodeArtifact repositori saat ini ketika dijalankan. `pip install`

## Versi paket yang ditarik
<a name="python-yanked-versions"></a>

Beberapa versi paket di pypi.org ditandai sebagai *ditarik,* yang berkomunikasi dengan penginstal paket (seperti pip) bahwa versi tersebut tidak boleh diinstal kecuali itu adalah satu-satunya yang cocok dengan penentu versi (menggunakan salah satu atau). `==` `===` Lihat [PEP\$1592](https://peps.python.org/pep-0592/) untuk informasi lebih lanjut.

Jika versi paket pada CodeArtifact awalnya diambil dari koneksi eksternal ke [pypi.org](https://pypi.org/), saat Anda menginstal versi paket dari CodeArtifact repositori, pastikan bahwa metadata menarik yang CodeArtifact diperbarui dari versi paket diambil dari pypi.org.

### Bagaimana cara mengetahui apakah versi paket ditarik
<a name="test-yanked-version"></a>

Untuk memeriksa apakah versi paket ditarik CodeArtifact, Anda dapat mencoba menginstalnya. `pip install packageName===packageVersion` Jika versi paket ditarik, Anda akan menerima pesan peringatan yang mirip dengan berikut ini:

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

Untuk memeriksa apakah versi paket ditarik di [pypi.org](https://pypi.org/), Anda dapat mengunjungi daftar pypi.org versi paket di. `https://pypi.org/project/packageName/packageVersion/`

### Menyetel status yang ditarik pada paket pribadi
<a name="yanked-private-packages"></a>

CodeArtifact tidak mendukung pengaturan metadata yang ditarik untuk paket yang diterbitkan langsung ke repositori. CodeArtifact 

## Mengapa CodeArtifact tidak mengambil metadata atau aset terbaru yang ditarik untuk versi paket?
<a name="no-yanked-metadata"></a>

[Biasanya, CodeArtifact memastikan bahwa ketika versi paket Python diambil dari CodeArtifact repositori, metadata yang ditarik adalah dengan nilai terbaru di pypi.org. up-to-date](https://pypi.org/) Selain itu, daftar aset dalam versi paket juga terus diperbarui dengan set terbaru di pypi.org dan repositori hulu CodeArtifact apa pun. Ini benar apakah Anda menginstal versi paket untuk pertama kalinya dan CodeArtifact mengimpornya dari pypi.org ke CodeArtifact repositori Anda, atau jika Anda telah menginstal paket sebelumnya. Namun, ada kasus ketika klien manajer paket, seperti pip, tidak akan menarik metadata terbaru yang ditarik dari pypi.org atau repositori upstream. Sebaliknya, CodeArtifact akan mengembalikan data yang sudah disimpan di repositori Anda. Bagian ini menjelaskan tiga cara hal ini dapat terjadi:

**Konfigurasi hulu:** Jika koneksi eksternal ke pypi.org dihapus dari repositori atau upstream menggunakan [disassociate-external-connection](external-connection.md#removing-an-external-connection), metadata yang ditarik tidak akan lagi di-refresh dari pypi.org. Demikian pula, jika Anda menghapus repositori upstream, aset dari repositori yang dihapus dan upstream repositori yang dihapus tidak akan lagi tersedia untuk repositori saat ini. Hal yang sama berlaku jika Anda menggunakan [kontrol asal CodeArtifact paket](package-origin-controls.md) untuk mencegah versi baru dari paket tertentu ditarik— pengaturan `upstream=BLOCK` akan memblokir metadata yang ditarik agar tidak disegarkan.

**Status versi paket:** Jika Anda menyetel status versi paket ke apa pun kecuali `Published` atau`Unlisted`, metadata dan aset yang ditarik dari versi paket tidak akan di-refresh. Demikian pula, jika Anda mengambil versi paket tertentu (katakanlah`torch 2.0.1`) dan versi paket yang sama ada di repositori upstream dengan status yang tidak `Published` atau`Unlisted`, ini juga akan memblokir metadata yang ditarik dan propagasi aset dari repositori upstream ke repositori saat ini. Ini karena status versi paket lainnya merupakan indikasi bahwa versi tersebut tidak dimaksudkan untuk dikonsumsi lagi di repositori apa pun.

**Penerbitan langsung:** Jika Anda mempublikasikan versi paket tertentu langsung ke CodeArtifact repositori, ini akan mencegah metadata yang ditarik dan penyegaran aset untuk versi paket dari repositori hulu dan pypi.org. Misalnya, Anda mengunduh aset dari versi paket`torch 2.0.1`, seperti`torch-2.0.1-cp311-none-macosx_11_0_arm64.whl`, menggunakan browser web dan kemudian mempublikasikannya ke CodeArtifact repositori Anda menggunakan benang sebagai. `torch 2.0.1` CodeArtifact melacak bahwa versi paket memasuki domain dengan menerbitkan langsung ke repositori Anda, bukan dari koneksi eksternal ke pypi.org atau repositori upstream. Dalam hal ini, metadata yang ditarik CodeArtifact tidak disinkronkan dengan repositori upstream atau pypi.org. Hal yang sama berlaku jika Anda mempublikasikan `torch 2.0.1` ke repositori upstream— keberadaan versi paket akan memblokir propagasi metadata dan aset yang ditarik ke repositori lebih jauh ke bawah grafik hulu.