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
