Python projeleri paketlemek ve tanımlamak için kullanılabilecek bir araç kafa karıştırıcı bir geçmişi vardır: bunlar arasında distutils, Standart Kitaplığı'nda distribute, distutils2ve setuptools(ve belki de daha fazla). Öyle görünüyor distributeve distutils2lehine devam edildi setuptools, bu da iki rakip standart bırakıyor.
Anladığım setuptoolskadarıyla distutils, Python standart kütüphanesine (henüz?) Dahil edilmediğinden çok daha fazla seçenek sunuyor (örn. Bağımlılıkları, testleri vb . Beyan etmek).
Python Ambalaj Kullanım Kılavuzu [ 1 ] artık tavsiye eder:
setuptoolsProjeleri tanımlamak ve Kaynak Dağıtımlar oluşturmak için kullanın .
Ve açıklar:
distutilsBirçok proje için saf kullanabilmenize rağmen , diğer projelere bağımlılıkları tanımlamayı desteklemez ve paket meta verilerini otomatik olarak sağlanan doğru meta dosyası doldurmak için çeşitli kolaylık yardımcı programlarından yoksundursetuptools. Standart kitaplığın dışında olan setuptools, Python'un farklı sürümlerinde daha tutarlı bir özellik sunar ve (aksinedistutils),setuptoolsdesteklenen tüm sürümlerde yaklaşan "Metadata 2.0" standart biçimlerini üretmek için güncellenir.
distutilsKullanmayı seçen projeler için bile , pip bu tür projeleri doğrudan kaynağından yüklediğinde (önceden oluşturulmuş bir tekerlek dosyasından yüklemek yerine), bununsetuptoolsyerine projenizi oluşturacaktır .
Ancak, çeşitli projenin setup.py dosyalarına bakıldığında bunun gerçek bir standart olmadığı görülmektedir. Birçok paketler hala kullanmaya distutilsve destek olanlar olduğu setuptoolssık sık karıştırın setuptoolsile distutilsbir geri dönüş ithalat yaparak ör:
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
Ardından, hem setuptoolsve tarafından yüklenebilecek bir kurulum yazmanın bir yolunu bulma girişimi distutils. Bu distutils, kurulum işlevindeki bağımlılıkları desteklemediğinden , genellikle hataya açık bağımlılık kontrolünün çeşitli yollarını içerir .
İnsanlar neden hala destek için ekstra çaba sarf ediyor distutils- setuptoolstek neden standart kütüphanede olmayan gerçek mi? Avantajları nelerdir distutilsve yalnızca destekleyen setup.py dosyalarını yazmanın herhangi bir dezavantajı vardır setuptools.
setuptoolsgeliştirilmiş bir alternatif olduğunu distutils"olduğunu ancak not tavsiye edilen pip yükleyici ile tüm setup.py komut dosyalarını çalıştırır setuptoolsbile yazısının kendisi yalnızca ithalat,distutils (" kaynak )
distutilsyeniden birleştirildisetuptools, ancak kullanmak için yazılan eski uygulamalar vardistutilsve standartlara geçmek için gereken maliyetler var.