Dokumen ini untuk versi lama Python yang tidak didukung lagi. Anda harus memutakhirkan, dan membaca Dokumentasi Python untuk rilis stabil saat ini.

# Mendistribusikan Modul Python

Email

  distutils-sig@python.org

Sebagai proyek pengembangan open source yang populer, Python memiliki komunitas pendukung aktif dan pengguna yang juga membuat perangkat lunak mereka tersedia untuk pengembang Python lain untuk digunakan di bawah persyaratan lisensi sumber terbuka.

Hal ini memungkinkan pengguna Python untuk berbagi dan berkolaborasi secara efektif, mendapatkan manfaat dari solusi yang telah dibuat oleh orang lain untuk masalah umum (dan kadang-kadang bahkan langka!), Serta berpotensi memberikan kontribusi solusi mereka sendiri ke kumpulan umum.

Panduan ini mencakup bagian distribusi dari proses. Untuk panduan untuk melakukan instalasi proyek Python lainnya, lihat: ref: panduan instalasi.

Catatan

Untuk pengguna korporat dan institusi lainnya, sadarilah bahwa banyak organisasi memiliki kebijakan mereka sendiri tentang penggunaan dan kontribusi untuk perangkat lunak sumber terbuka. Harap pertimbangkan kebijakan tersebut saat menggunakan alat distribusi dan instalasi yang disediakan dengan Python.

## Istilah utama

- the Python Package Index is a public repository of open source licensed packages made available for use by other Python users

- Python Packaging Authority adalah kelompok pengembang dan penulis dokumentasi yang bertanggung jawab atas pemeliharaan dan evolusi alat pengemasan standar serta standar metadata dan format berkas terkait. Mereka memelihara berbagai alat, dokumentasi dan pelacak isu di GitHub dan Bitbucket.

- `distutils` is the original build and distribution system first added to the Python standard library in 1998. While direct use of `distutils` is being phased out, it still laid the foundation for the current packaging and distribution infrastructure, and it not only remains part of the standard library, but its name lives on in other ways (such as the name of the mailing list used to coordinate Python packaging standards development).

- setuptools adalah pengganti (sebagian besar) langsung untuk :mod: distutils yang pertama kali diterbitkan pada tahun 2004. Penambahannya yang paling penting di atas mod yang tidak dimodifikasi alat :mod: distutils adalah kemampuan untuk mendeklarasikan dependensi pada paket-paket lain. Saat ini direkomendasikan sebagai alternatif yang lebih teratur diperbarui untuk :mod: distutils yang menawarkan dukungan konsisten untuk standar kemasan yang lebih baru di berbagai versi Python.

- wheel (dalam konteks ini) adalah proyek yang menambahkan perintah `bdist_wheel` ke `distutils`/setuptools. Ini menghasilkan format paket biner lintas platform (disebut "wheels" atau "wheels" dan didefinisikan dalam PEP 427) yang memungkinkan pustaka Python, bahkan yang termasuk ekstensi biner, untuk dipasang pada sistem tanpa perlu dibangun secara lokal.

## Lisensi dan kolaborasi sumber terbuka

Di sebagian besar dunia, perangkat lunak secara otomatis dilindungi oleh hak cipta. Ini berarti bahwa pengembang lain memerlukan izin eksplisit untuk menyalin, menggunakan, memodifikasi, dan mendistribusikan ulang perangkat lunak.

Lisensi sumber terbuka adalah cara untuk secara eksplisit memberikan izin seperti itu dengan cara yang relatif konsisten, memungkinkan pengembang untuk berbagi dan berkolaborasi secara efisien dengan membuat solusi umum untuk berbagai masalah yang tersedia secara bebas. Ini membuat banyak pengembang bebas menghabiskan lebih banyak waktu berfokus pada masalah yang relatif unik untuk situasi khusus mereka.

Alat distribusi yang disediakan dengan Python dirancang untuk memudahkan pengembang untuk membuat kontribusi mereka sendiri kembali ke kumpulan perangkat lunak umum jika mereka memilih untuk melakukannya.

Alat distribusi yang sama juga dapat digunakan untuk mendistribusikan perangkat lunak dalam suatu organisasi, terlepas dari apakah perangkat lunak tersebut dipublikasikan sebagai perangkat lunak sumber terbuka atau tidak.

## Instalasi alat

Pustaka standar tidak termasuk alat bangun yang mendukung standar pemaketan Python modern, sebagaimana tim pengembang inti telah menemukan bahwa penting untuk memiliki alat standar yang bekerja secara konsisten, bahkan pada versi Python yang terdahulu.

Alat bangun dan distribusi yang direkomendasikan saat ini dapat diinstal dengan menjalankan modul `pip` pada baris perintah

    python -m pip install setuptools wheel twine

Catatan

For POSIX users (including macOS and Linux users), these instructions assume the use of a virtual environment.

Untuk pengguna Windows, petunjuk ini mengasumsikan bahwa opsi untuk menyesuaikan variabel lingkungan PATH sistem dipilih ketika melakukan instalasi Python.

Panduan Pengguna Python Packaging menyertakan lebih banyak rincian tentang alat yang direkomendasikan saat ini.

## Membaca Panduan Pengguna Python Packaging

Panduan Pengguna Python Packaging mencakup berbagai langkah kunci dan elemen yang terlibat dalam membuat dan menerbitkan sebuah proyek:

- Struktur proyek

- Membangun dan memaketkan proyek

- Uploading the project to the Python Package Index

- File `.pypirc`

## Bagaimana saya...?

Ini adalah jawaban cepat atau tautan untuk beberapa tugas umum.

### ... pilih nama untuk proyek saya?

Ini bukan topik yang mudah, tetapi berikut beberapa kiatnya:

- check the Python Package Index to see if the name is already in use

- periksa situs hosting populer seperti GitHub, Bitbucket, dll untuk melihat apakah sudah ada proyek dengan nama itu

- periksa apa yang muncul dalam pencarian web untuk nama yang Anda pertimbangkan

- hindari kata-kata yang sangat umum, terutama yang memiliki banyak makna, karena dapat menyulitkan pengguna untuk menemukan perangkat lunak Anda ketika menelusurinya

### ... membuat dan mendistribusikan ekstensi biner?

Ini sebenarnya adalah topik yang cukup rumit, dengan berbagai alternatif yang tersedia tergantung pada apa yang ingin Anda capai. Lihat Panduan Pengguna Python Packaging untuk informasi dan rekomendasi lebih lanjut.

Lihat juga

Panduan Pengguna *Python Packaging*: Ekstensi Biner