2010-08-20 11 views
10

Sto tentando di spostare un progetto da virtualenv a buildout, ma non credo di aver colto l'intero concetto di buildout. Tutte le esercitazioni che ho trovato discutono di buildout nel contesto dell'utilizzo con Zope, che non sto utilizzando e quindi non riesco a vedere come continuare.Come migrare da virtualenv a buildout?

La mia struttura dei file con virtualenv è la seguente:

myapp/ 
    app.py 

cui viene eseguito utilizzando /path/to/venvs/myapp/bin/python /path/to/myapp/script.py.

Con buildout, la mia struttura dei file è:

myapp/ 
    app.py 
    bootstrap.py 
    buildout.cfg 

Esecuzione python bootstrap.py e bin/buildout mi dà questi file aggiuntivi:

myapp/ 
    bin/ 
    buildout 
    eggs/ 
    setuptools-0.6c12dev_r80622-py2.6.egg 
    tornado-1.0.1-py2.6.egg 
    parts/ 

A questo punto io sono sicuro di come a "correre" la mia app .

Consigli?

risposta

3

La seguente ricetta installerà il tornado come un uovo e creerà uno script python e myapp nella directory bin con il percorso di ricerca corretto per trovare l'uovo del tornado.

[buildout] 
parts = python 
eggs = tornado 
extra-paths = ${buildout:directory} 

[python] 
recipe = zc.recipe.egg 
interpreter = python 
eggs = ${buildout:eggs} 
entry-points = myapp=app:main 
extra-paths = ${buildout:extra-paths} 
3

Buildout e virtualenv sono in realtà correlati tangenzialmente. Buildout riguarda davvero l'implementazione del software in modo vincolato e controllato, dove virtualenv tratta dell'incapsulamento dell'ambiente in cui viene eseguito il software python. Buildout fornisce ciò che virtualenv fa dentro di sé e quindi avvolge un po 'di più attorno ad esso.

Pensate a buildout come set di ricette su come prendere il codice e adagiarlo su un sistema remoto pronto per essere eseguito. Parte di questo processo inizia con la creazione di una sandbox pulita (che è ciò che virtualenv può fornire) - e quindi aggiungendo librerie, pezzi e parti di cui hai bisogno.

Non sono un esperto di buildout, ma mi aspetto che il codice principale di Python venga visualizzato sotto "bin" nella struttura della directory e che in qualche modo lo si invochi da lì.

Problemi correlati