Pada Maret 2020, sebagian besar jawaban lain untuk pertanyaan ini beberapa tahun kedaluwarsa. Ketika Anda menemukan saran tentang masalah pengemasan Python, ingatlah untuk melihat tanggal publikasi, dan jangan percayai informasi yang ketinggalan zaman.
The Python Panduan Kemasan Pengguna adalah layak dibaca. Setiap halaman memiliki tanggal "pembaruan terakhir" yang ditampilkan, sehingga Anda dapat memeriksa kebaruan manual, dan ini cukup komprehensif. Fakta bahwa itu di-host di subdomain python.org dari Python Software Foundation hanya menambah kepercayaan untuk itu. The Project Ringkasan Halaman ini terutama relevan di sini.
Ringkasan alat:
Berikut ringkasan lanskap kemasan Python:
Alat yang didukung:
distutils
masih merupakan alat standar untuk pengemasan dengan Python. Ini termasuk dalam pustaka standar (Python 2 dan Python 3). Ini berguna untuk distribusi Python sederhana, tetapi tidak memiliki fitur. Ini memperkenalkan distutils
paket Python yang dapat diimpor dalam setup.py
skrip Anda .
setuptools
dikembangkan untuk mengatasi keterbatasan Distutils, dan tidak termasuk dalam perpustakaan standar. Itu memperkenalkan utilitas baris perintah yang disebut easy_install
. Ini juga memperkenalkan setuptools
paket Python yang dapat diimpor dalam setup.py
skrip Anda , dan pkg_resources
paket Python yang dapat diimpor dalam kode Anda untuk mencari file data yang diinstal dengan distribusi. Salah satu gotchas-nya adalah ia menambal distutils
paket Python. Ini harus bekerja dengan baik pip
. Ia melihat rilis reguler.
scikit-build
adalah generator sistem bangun yang ditingkatkan yang secara internal menggunakan CMake untuk membangun ekstensi Python yang dikompilasi. Karena scikit-build tidak didasarkan pada distutils, ia tidak benar-benar memiliki keterbatasan. Ketika ninja-build hadir, scikit-build dapat mengkompilasi proyek besar tiga kali lebih cepat daripada alternatifnya. Ini harus bekerja dengan baik pip
.
distlib
adalah perpustakaan yang menyediakan fungsionalitas yang digunakan oleh alat tingkat tinggi seperti pip
.
packaging
juga merupakan perpustakaan yang menyediakan fungsionalitas yang digunakan oleh alat tingkat tinggi seperti pip
dansetuptools
Alat yang ditinggalkan / ditinggalkan:
distribute
adalah garpu setuptools
. Ini berbagi namespace yang sama, jadi jika Anda telah Mendistribusikan diinstal, import setuptools
sebenarnya akan mengimpor paket yang didistribusikan dengan Mendistribusikan Mendistribusikan digabung kembali ke Setuptools 0.7 , jadi Anda tidak perlu menggunakan Mendistribusikan lagi. Bahkan, versi pada Pypi hanyalah lapisan kompatibilitas yang menginstal Setuptools.
distutils2
adalah upaya untuk mengambil yang terbaik dari distutils
, setuptools
dan distribute
dan menjadi alat standar yang termasuk dalam perpustakaan standar Python. Idenya adalah bahwa distutils2
akan didistribusikan untuk versi Python lama, dan itu distutils2
akan diubah namanya menjadi packaging
untuk Python 3.3, yang akan memasukkannya ke dalam perpustakaan standarnya. Namun, rencana ini tidak berjalan sebagaimana mestinya, dan saat ini, distutils2
merupakan proyek yang ditinggalkan . Rilis terbaru adalah pada bulan Maret 2012, dan beranda Pypi akhirnya diperbarui untuk mencerminkan kematiannya.
Lainnya:
Ada alat lain, jika Anda tertarik, baca Ringkasan Proyek di Panduan Pengguna Kemasan Python. Aku tidak akan daftar mereka semua, untuk tidak mengulangi halaman tersebut, dan untuk menjaga jawaban yang cocok dengan pertanyaan, yang hanya sekitar distribute
, distutils
, setuptools
dan distutils2
.
Rekomendasi:
Jika semua ini baru bagi Anda, dan Anda tidak tahu harus mulai dari mana, saya akan merekomendasikan belajarsetuptools
, bersama pip
dan virtualenv
, yang semuanya bekerja dengan sangat baik bersama.
Jika Anda melihat ke dalam virtualenv
, Anda mungkin tertarik pada pertanyaan ini: Apa perbedaan antara venv
, pyvenv
, pyenv
, virtualenv
, virtualenvwrapper
, dll? . (Ya, aku tahu, aku mengerang bersamamu.)