Mart 2020 itibariyle, bu soruya verilen diğer cevapların çoğu yıllarca güncelliğini yitirmiştir. Python paketleme sorunları hakkında tavsiyelerde bulunduğunuzda, yayınlanma tarihine bakmayı unutmayın ve güncel olmayan bilgilere güvenmeyin.
Python Ambalaj Kullanım Kılavuzu değerinde bir okuma olduğunu. Her sayfada "son güncelleme" tarihi görüntülenir, bu nedenle kılavuzun yeniliğini kontrol edebilirsiniz ve oldukça kapsamlıdır. Python Yazılım Vakfı'nın python.org alt alanında barındırılması gerçeği buna güveniyor. Proje Özetler sayfa burada özellikle önemlidir.
Araçların özeti:
İşte Python paketleme ortamının bir özeti:
Desteklenen araçlar:
distutils
hala Python'da paketleme için standart bir araçtır. Standart kütüphaneye dahildir (Python 2 ve Python 3). Basit Python dağıtımları için yararlıdır, ancak özelliklerden yoksundur. Betiğinize distutils
aktarılabilecek Python paketini tanıtır setup.py
.
setuptools
Distutils'in sınırlamalarının üstesinden gelmek için geliştirilmiştir ve standart kütüphaneye dahil edilmemiştir. Adlı bir komut satırı yardımcı programı tanıttı easy_install
. Ayrıca setuptools
, setup.py
komut dosyanızda içe aktarılabilen pkg_resources
Python paketini ve bir dağıtımla yüklenen veri dosyalarını bulmak için kodunuza içe aktarılabilen Python paketini tanıttı . Yakaladıkları şeylerden biri de distutils
Python paketinin maymun yamaları . İle iyi çalışması gerekir pip
. Düzenli sürümler görür.
scikit-build
derlenmiş Python uzantıları oluşturmak için dahili olarak CMake kullanan geliştirilmiş bir derleme sistemi üreticisidir. Scikit-build, distutillere dayanmadığından, gerçekten herhangi bir sınırlaması yoktur. Ninja-build mevcut olduğunda, scikit-build büyük projeleri alternatiflerden üç kat daha hızlı derleyebilir. İle iyi çalışması gerekir pip
.
distlib
gibi üst düzey araçlar tarafından kullanılan işlevsellik sağlayan bir kitaplıktır pip
.
packaging
aynı zamanda, pip
ve gibi üst düzey araçlar tarafından kullanılan işlevselliği sağlayan bir kitaplıktır.setuptools
Kullanımdan kaldırılmış / terk edilmiş araçlar:
distribute
bir çataldı setuptools
. Aynı ad alanını paylaştı, bu nedenle Distribute yüklediyseniz, import setuptools
Distribute ile dağıtılan paketi içe aktarırdı. Dağıt yeniden Setuptools 0.7 ile birleştirildi , bu yüzden artık Dağıt kullanmanıza gerek yok. Aslında, Pypi'deki sürüm sadece Setuptools'u yükleyen bir uyumluluk katmanıdır.
distutils2
En iyi almak için bir girişim oldu distutils
, setuptools
ve distribute
Python'ın standart kütüphanesinde bulunan standart bir araç haline. Fikir, distutils2
eski Python sürümleri için dağıtılacak ve standart kütüphanesine dahil distutils2
edilecek packaging
Python 3.3 için yeniden adlandırılacaktı . Ancak bu planlar planlandığı gibi gitmedi ve şu anda distutils2
terk edilmiş bir proje . En son sürüm Mart 2012'de yapıldı ve Pypi ana sayfası sonunda ölümünü yansıtacak şekilde güncellendi.
Diğerleri:
İlgileniyorsanız başka araçlar da vardır, Python Ambalaj Kullanım Kılavuzu'ndaki Proje Özetleri'ni okuyun . Ben o sayfayı tekrarlamayın için ve sadece yaklaşık soruyu, eşleştirme cevabı tutmak, hepsini liste olmayacak distribute
, distutils
, setuptools
ve distutils2
.
Öneri:
Tüm bu sizin için yeni olduğunu ve nereden başlayacağınızı bilmiyorsanız, ben öğrenmeyi öneriyoruzsetuptools
birlikte pip
ve virtualenv
hangi tüm çalışma çok iyi bir araya.
İçine arıyorsanız virtualenv
, bu soruya ilginizi çekebilir: arasındaki fark nedir venv
, pyvenv
, pyenv
, virtualenv
, virtualenvwrapper
, vs? . (Evet, biliyorum, seninle iniliyorum.)