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
, distutils2
ve setuptools
(ve belki de daha fazla). Öyle görünüyor distribute
ve distutils2
lehine devam edildi setuptools
, bu da iki rakip standart bırakıyor.
Anladığım setuptools
kadarı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:
setuptools
Projeleri tanımlamak ve Kaynak Dağıtımlar oluşturmak için kullanın .
Ve açıklar:
distutils
Birç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
),setuptools
desteklenen tüm sürümlerde yaklaşan "Metadata 2.0" standart biçimlerini üretmek için güncellenir.
distutils
Kullanmayı 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), bununsetuptools
yerine 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 distutils
ve destek olanlar olduğu setuptools
sık sık karıştırın setuptools
ile distutils
bir geri dönüş ithalat yaparak ör:
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
Ardından, hem setuptools
ve 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
- setuptools
tek neden standart kütüphanede olmayan gerçek mi? Avantajları nelerdir distutils
ve yalnızca destekleyen setup.py dosyalarını yazmanın herhangi bir dezavantajı vardır setuptools
.
setuptools
geliş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 setuptools
bile yazısının kendisi yalnızca ithalat,distutils
(" kaynak )
distutils
yeniden birleştirildisetuptools
, ancak kullanmak için yazılan eski uygulamalar vardistutils
ve standartlara geçmek için gereken maliyetler var.