2010-08-20 9 views
10

Estoy intentando mover un proyecto de virtualenv a buildout, pero no creo haber captado el concepto completo de buildout. Todos los tutoriales que he encontrado discuten buildout en el contexto de usarlo con Zope, que no estoy usando y por lo tanto no puedo ver cómo continuar.¿Cómo migrar de virtualenv a buildout?

Mi estructura de archivos con virtualenv es el siguiente:

myapp/ 
    app.py 

el que se ejecuta utilizando /path/to/venvs/myapp/bin/python /path/to/myapp/script.py.

Con buildout, mi estructura de archivos es:

myapp/ 
    app.py 
    bootstrap.py 
    buildout.cfg 

Correr python bootstrap.py y bin/buildout me da estos archivos adicionales:

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

En este punto estoy seguro de cómo "funciona" mi aplicación .

¿Asesoramiento?

Respuesta

3

La siguiente receta instalará un tornado como un huevo y creará un script de python y myapp en el directorio bin con la ruta de búsqueda correcta para encontrar el huevo de 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 y virtualenv están realmente tangencialmente relacionados. Buildout se trata realmente de la implementación de software de forma restringida y controlada, donde virtualenv trata de encapsular el entorno en el que se ejecuta el software python. Buildout proporciona lo que virtualenv hace dentro de sí mismo y luego lo envuelve un poco más.

Piense en buildout como el conjunto de recetas de cómo tomar su código y colocarlo en un sistema remoto listo para ejecutarse. Parte de ese proceso comienza con la creación de una zona de pruebas limpia (que es lo que virtualenv también puede proporcionar), y luego agregar bibliotecas, piezas y piezas según lo necesite.

No soy un experto en construcción, pero esperaba que tu código principal de python apareciera en "bin" en la estructura de tu directorio, y que de alguna manera estarías invocándolo desde allí.