Come impacchettare un'applicazione python per renderla installabile tramite pip?


95

Sto scrivendo un'applicazione django nel mio tempo libero per una gara di punta di piedi che stiamo conducendo al lavoro. Ho pensato che avrei usato questo tempo con saggezza e sarei stato al corrente di virtualenv, pip, packaging, django 1.3 e come scrivere un'applicazione facilmente ridistribuibile. Fin qui tutto bene.

Sono all'altezza della parte del packaging. Molte delle app django su GitHub, ad esempio, sono per lo più raggruppate (più o meno) allo stesso modo. Userò django-uni-forme come esempio.

Un presupposto che sto facendo è che gli MANIFEST.ine setup.pysono gli unici pezzi necessari di cui pip ha bisogno per fare il suo lavoro. È corretto? Quali altri componenti sono necessari se la mia ipotesi è sbagliata?

I file di packaging richiesti vengono generati generalmente o sono realizzati a mano? È possibile descrivere e quindi installare anche le dipendenze? La mia applicazione dipende da django-uni-formse l'ho elencata in un requirements.txtfile all'interno della mia app che ho utilizzato per installare la dipendenza; ma è qualcosa di cui può occuparsi il sistema di confezionamento?

Quali sono i passaggi che devo seguire per creare un pacchetto della mia applicazione in modo tale che pip possa installarla ed eventuali dipendenze?

Risposte:


88

Sì, MANIFEST.ine setup.pydovrebbe essere sufficiente.

Questo post del blog contiene davvero alcune buone informazioni su questo argomento: Creazione di un pacchetto di un'app riutilizzabile Django

Ed ecco un'altra buona panoramica dettagliata che mi ha aiutato molto: Python Packaging User Guide

Soprattutto i suggerimenti per includere i file statici (modelli) sono importanti poiché all'inizio potrebbe non essere ovvio.

E sì, puoi specificare i pacchetti richiesti nel tuo setup.pyche vengono recuperati automaticamente durante l'installazione della tua app.

Per esempio:

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

Ovviamente ora abbiamo due posizioni in cui vengono definite le dipendenze, ma ciò non significa necessariamente che queste informazioni siano duplicate: setup.py vs requirements.txt

Con questa configurazione il tuo pacchetto dovrebbe essere installabile tramite pip.


Come ha notato Pierre nei commenti, ora c'è anche una sezione pertinente nella documentazione ufficiale di Django: Packaging your app

E poi c'è questa guida "completamente incompleta", che offre davvero un'ottima panoramica sulla pacchettizzazione e sul caricamento di un pacchetto su PyPI: Sharing Your Labour of Love: PyPI Quick And Dirty


4
Inoltre ora c'è una parte che spiega come
creare
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.