This document is for an old version of Python that is no longer supported. You should upgrade and read the 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

- Python Packaging Index adalah repositori publik dari paket berlisensi open source yang dibuat tersedia untuk digunakan oleh pengguna Python lain

- the Python Packaging Authority are the group of developers and documentation authors responsible for the maintenance and evolution of the standard packaging tools and the associated metadata and file format standards. They maintain a variety of tools, documentation and issue trackers on both GitHub and 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

Untuk pengguna POSIX (termasuk pengguna Mac OS X dan Linux), petunjuk ini mengasumsikan penggunaan :term: lingkungan virtual.

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.

## Reading the guide

The Python Packaging User Guide covers the various key steps and elements involved in creating a project:

- Struktur proyek

- Membangun dan memaketkan proyek

- Mengunggah proyek ke Indeks Pemaketan Python

## 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:

- periksa Indeks Pemaketan Python untuk melihat apakah nama tersebut sudah digunakan

- check popular hosting sites like GitHub, BitBucket, etc to see if there is already a project with that name

- 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

Python Packaging User Guide: Binary Extensions