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:
distutilshala 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 distutilsaktarılabilecek Python paketini tanıtır setup.py.
setuptoolsDistutils'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.pykomut dosyanızda içe aktarılabilen pkg_resourcesPython 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 distutilsPython paketinin maymun yamaları . İle iyi çalışması gerekir pip. Düzenli sürümler görür.
scikit-buildderlenmiş 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.
distlibgibi üst düzey araçlar tarafından kullanılan işlevsellik sağlayan bir kitaplıktır pip.
packagingaynı zamanda, pipve 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:
distributebir çataldı setuptools. Aynı ad alanını paylaştı, bu nedenle Distribute yüklediyseniz, import setuptoolsDistribute 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.
distutils2En iyi almak için bir girişim oldu distutils, setuptoolsve distributePython'ın standart kütüphanesinde bulunan standart bir araç haline. Fikir, distutils2eski Python sürümleri için dağıtılacak ve standart kütüphanesine dahil distutils2edilecek packagingPython 3.3 için yeniden adlandırılacaktı . Ancak bu planlar planlandığı gibi gitmedi ve şu anda distutils2terk 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, setuptoolsve distutils2.
Öneri:
Tüm bu sizin için yeni olduğunu ve nereden başlayacağınızı bilmiyorsanız, ben öğrenmeyi öneriyoruzsetuptools birlikte pipve virtualenvhangi 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.)