2009-11-26 12 views
11

Supponiamo che un programmatore abbia il seguente problema: vuole avviare un nuovo progetto python. Ha bisogno di un layout di base di materiale standard, come la directory di test, la directory di origine, lo script setuptools, ecc. Come crea tutto questo e il layout con un singolo comando?Inizializza il layout del progetto in python?

Per esempio, paster (come suggerito in una delle risposte, si offre questo servizio)

paster create 
Selected and implied templates: PasteScript#basic_package 
A basic setuptools-enabled package 

ma paster è parte di uno strumento il cui scopo principale non è la distribuzione di pacchetti. Cosa succede se voglio avere un modello per una libreria e un modello per un'applicazione? Come posso modificare il modello per aggiungere le mie cose personali ad esso?

+0

... e avviare il repository Bazaar ;-) – jldupont

+0

Sono stanco di ricreare il layout del pacchetto e l'installazione ogni volta e ripetere un sacco di errori banali. Se c'è una cosa che fa per me e ho appena riempire gli spazi è molto meglio. –

+0

anche perché se copio il mio vecchio setup, non sono sicuro di essere aggiornato con "il modo giusto". –

risposta

10

avete bisogno di qualcosa che sostiene di template per tirare fuori questo. Il più usato nella comunità Python è il pastescript.

easy_install pastescript # A one-time install 
paster create 

Se hai già deciso il nome del pacchetto, che è solo:

paster create mypackage 

Se si desidera personalizzare il modello, che il modo più semplice è quello di creare il proprio pacchetto python che include il modello personalizzato che desideri. Una volta installato nel tuo ambiente, puoi utilizzare questo modello personalizzato quanto vuoi. (Questo è il genere di cose usate da strutture come i tralicci per creare un modello per un'applicazione web).

paster create -t libtemplate mypackage 
paster create -t apptemplate mypackage 

Per maggiori dettagli su come creare modelli (che consistono in un mix di file di codice sorgente e) dare un'occhiata a: http://pythonpaste.org/script/developer.html#templates Si noterà che i modelli di supporto eredità, in modo che si può, ad esempio, costruisci il modello incluso o crea i tuoi modelli da zero.

Per un buon esempio di un modello personalizzato, si può prendere uno sguardo ai piloni modello in origine, qui: Pylons Template Code

Inoltre, se non si sta già utilizzando, si dovrebbe dare un'occhiata a La virtualizzazione di Ian Bicking. Ti permette di creare ambienti "virtuali" temporanei che ti permettono di installare pacchetti python senza usare e/o entrare in conflitto con i pacchetti di sistema che potresti aver installato.

una configurazione standard con virtualenv e pastescript potrebbe essere simile a questo:

mkdir mypackage && cd mypackage 
virtualenv --distribute env 
source env/bin/activate # 'Turns on/activates' the environment 
easy_install pastescript 
paster create mypackage 
+0

Whoops, i commenti dimenticati non accettano la formattazione. Aggiungendo alla domanda. –

+0

+ !: GRAZIE. In qualche modo, ho perso il memo su Paster apparentemente. –

1

Si può fare i propri modelli. Davvero utile, ad esempio per gli standard interni della struttura del progetto.

Il modo migliore per iniziare a crearne uno è iniziare con un esempio esistente e copiare/incollare i bit rilevanti da esso. Suggerimento: ZopeSkel in quanto è piuttosto grande con molti esempi. Sfoglia the source code.

3

sto usando modern-package-template al layout i miei progetti Python.

modern-package-template è un modello PasteScript per creare un layout iniziale per i progetti Python utilizzando strumenti e pratiche moderni seguiti nella comunità Python.Così, i vostri progetti avranno le seguenti caratteristiche:

  • Uso Distribuire invece setuptools come BDFL lui sostiene.
  • supporto Buildout, se non sono tenuti a fare uso di esso.
  • README.txt e NEWS.txt automaticamente inclusi nei metadati pacchetto come long_description, rendendo così apparire nella pagina PyPI per il progetto.
  • lo script automatico (o exe) creazione utilizzando Distribuire

Maggiori informazioni e scaricare da PyPI: http://pypi.python.org/pypi/modern-package-template

1

ho usato cookiecutter. E 'scritto in python, ma può essere utilizzato per qualsiasi tipo di progetto; non solo python. Utilizza Jinja per i template e include i pre e post hook (scritti in python o bash) che possono facilmente creare/gestire i propri virtualenvs o qualsiasi altra cosa tu possa pensare. È possibile memorizzare i propri modelli in una directory locale o tirare altri popoli direttamente da Internet ed eseguirli senza memorizzare localmente prima. Sembra molto più versatile, semplice da usare, e secondo me più utile allora paster (disclosure: paster non ho provato). È anche in sviluppo attivo.

Problemi correlati