Python memiliki sejarah membingungkan alat yang dapat digunakan untuk paket dan menjelaskan proyek-proyek: ini termasuk distutilsdi Perpustakaan Standard, distribute, distutils2, dan setuptools(dan mungkin lebih). Tampaknya distributedan distutils2tidak lagi mendukung setuptools, yang meninggalkan dua standar yang bersaing.
Untuk pemahaman saya setuptoolsmenawarkan opsi yang jauh lebih banyak (misalnya mendeklarasikan dependensi, tes, dll) daripada distutils, namun tidak termasuk dalam pustaka standar Python (belum?).
The Python Kemasan Panduan Pengguna [ 1 ] merekomendasikan sekarang:
Gunakan
setuptoolsuntuk mendefinisikan proyek dan membuat Distribusi Sumber.
Dan menjelaskan:
Meskipun Anda dapat menggunakan pure
distutilsuntuk banyak proyek, itu tidak mendukung mendefinisikan dependensi pada proyek lain dan kehilangan beberapa utilitas kenyamanan untuk secara otomatis mengisi metadata paket dengan benar yang disediakan olehsetuptools. Berada di luar perpustakaan standar, setuptools juga menawarkan set fitur yang lebih konsisten di berbagai versi Python, dan (tidak sepertidistutils),setuptoolsakan diperbarui untuk menghasilkan format standar "Metadata 2.0" yang akan datang pada semua versi yang didukung.Bahkan untuk proyek yang memang memilih untuk digunakan
distutils, ketika pip menginstal proyek seperti itu langsung dari sumber (daripada menginstal dari file roda prebuilt), itu sebenarnya akan membangun proyek Anda menggunakansetuptoolssebagai gantinya.
Namun, melihat ke berbagai file setup.py proyek mengungkapkan bahwa ini tampaknya bukan standar yang sebenarnya. Banyak paket masih menggunakan distutilsdan mereka yang mendukung setuptoolssering mencampur setuptoolsdengan distutilsmisalnya dengan melakukan impor fallback:
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
Diikuti oleh upaya untuk menemukan cara untuk menulis pengaturan yang dapat diinstal oleh keduanya setuptoolsdan distutils. Ini sering mencakup berbagai cara pengecekan dependensi rawan kesalahan, karena distutilstidak mendukung dependensi dalam fungsi pengaturan.
Mengapa orang masih melakukan upaya ekstra untuk mendukung distutils- adalah fakta bahwa setuptoolstidak ada di perpustakaan standar satu-satunya alasan? Apa kelebihannya distutilsdan adakah kekurangan menulis file setup.py yang hanya mendukung setuptools.
setuptoolsadalah alternatif yang disempurnakan untuk distutilstetapi perhatikan bahwa " Penginstal pip yang disarankan menjalankan semua skrip setup.py dengan , bahkan jika skrip itu sendiri hanya mengimporsetuptoolsdistutils " ( sumber )
distutilstelah digabungkan kembali ke dalamsetuptools, tetapi ada aplikasi warisan yang ditulis untuk digunakandistutilsdan ada biaya yang diperlukan untuk bermigrasi ke standar yang benar.