Bir python uygulamasını pip ile kurulabilir hale getirmek için nasıl paketlerim?


95

İş yerinde yürüttüğümüz bir futbol yarışı için boş zamanlarımda bir django uygulaması yazıyorum. Bu zamanı akıllıca kullanacağımı ve virtualenv, pip, paketleme, django 1.3 ve kolayca yeniden dağıtılabilir bir uygulamanın nasıl yazılacağı konusunda hızlanacağımı düşündüm. Çok uzak çok iyi.

Ben ambalaj kısmına kaldım. Örneğin GitHub'daki birçok django uygulaması çoğunlukla aynı şekilde (kabaca) paketlenmiştir. Django-uni-formlarını örnek olarak kullanacağım .

Ben yapıyorum bir varsayım olduğunu MANIFEST.inve setup.pypip ihtiyacı olan işi yapmak için sadece gerekli parçalarıdır. Bu doğru mu? Varsayımım yanlışsa başka hangi bileşenler gereklidir?

Gerekli paketleme dosyaları genel olarak mı oluşturulmuş yoksa elle mi oluşturulmuş? Bağımlılıklar tanımlanıp sonra da kurulabilir mi? Uygulamam bağlıdır django-uni-formsve onu requirements.txt, bağımlılığı yüklemek için kullandığım uygulamamdaki bir dosyada listeledim ; ama bu, paketleme sisteminin halledebileceği bir şey mi?

Uygulamamı, pip'i ve herhangi bir bağımlılığı kurabilecek şekilde paketlemek için izlemem gereken adımlar nelerdir?

Yanıtlar:


88

Evet MANIFEST.inve setup.pyyeterli olmalıdır.

Bu blog gönderisi, bu konu hakkında gerçekten iyi bilgiler içeriyor : Yeniden kullanılabilir bir Django uygulamasını paketleme

Ve işte bana çok yardımcı olan başka bir iyi, ayrıntılı genel bakış: Python Packaging User Guide

Özellikle statik dosyalarınızı (şablonlarınızı) dahil etmek için ipuçları, bu ilk başta açık olmayabileceğinden önemlidir.

Ve evet, setup.pyuygulamanızı kurarken otomatik olarak getirilecek olan gerekli paketleri belirtebilirsiniz .

Örneğin:

    install_requires = [
        'django-profiles',
        'django-uni-forms',
    ],

Açıkçası, şimdi bağımlılıkların tanımlandığı iki yerimiz var, ancak bu, bu bilgilerin yinelenmiş olduğu anlamına gelmez: setup.py vs requirements.txt

Bu kurulumla paketiniz aracılığıyla kurulabilir olmalıdır pip.


Pierre'in yorumlarda belirttiği gibi, artık Django'nun resmi belgelerinde de ilgili bir bölüm var: Uygulamanızı paketleme

Ve bir de, PyPI'ye bir paketin paketlenmesi ve yüklenmesi hakkında gerçekten harika bir genel bakış sunan bu "tamamen eksik" kılavuz var: Sevginizi Paylaşmak: PyPI Hızlı ve Kirli


4
Ayrıca resmi belgelerde bir Django uygulamasının nasıl paketleneceğini açıklayan bir bölüm de var
Pierre de LESPINAY
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.