Autor(es): | Leonardo J. Caballero G. |
---|---|
Correo(s): | leonardocaballero@gmail.com |
Lanzamiento: | 0.1 |
Fecha: | 16 de Feb del 2013 |
Una herramienta para administrar, a través de un archivo de configuración declaratoria, las partes y componentes de un desarrollo con Python. Dichas partes no están limitadas a componentes o código Python.
La parte más poderosa de buildout es que puede extenderse con el uso de “recetas” que pueden instalar componentes más complicados simplemente agregando nuevas secciones a la configuración. Buildout puede instalar diversos paquetes de Python fácilmente porque está conectado con el índice de paquetes de Python (http://www.python.org/pypi).
Hay que entender varios conceptos antes de continuar tales como Paquete Python, paquetes Egg, Cheese shop, Producto Zope, Instalación de Zope, Instancia de Zope y easy_install.
Existen instrucciones detalladas para la instalación de requisitos, pero en general se necesita lo siguiente:
Se puede generar un buildout utilizando un template de paster:
$ paster create -t plone3_buildout unam.buildout
El template hace varias preguntas:
Selected and implied templates:
ZopeSkel#plone3_buildout A buildout for Plone 3 projects
Variables:
egg: unam.buildout
package: unam.buildout
project: unam.buildout
Enter zope2_install (Path to Zope 2 installation; leave blank to fetch one) ['']:
<si ya se tiene una instalación de Zope se puede usar poniendo aquí el path>
Enter plone_products_install (Path to directory containing Plone products; leave blank to fetch one) ['']:
<lo mismo aquí si ya se tienen los productos de Plone>
Enter zope_user (Zope root admin user) ['admin']:
<el usuario administrador del sitio>
Enter zope_password (Zope root admin password) ['']:
<el password para este usuario>
Enter http_port (HTTP port) [8080]:
<el puerto donde escuchará el servicio de Zope>
Enter debug_mode (Should debug mode be "on" or "off"?) ['off']:
<'on' para activar el modo de debug>
Enter verbose_security (Should verbose security be "on" or "off"?) ['off']:
<'on' para presentar detalles cuando ocurran errores de privilegios>
...
...
...
-----------------------------------------------------------
Generation finished
You probably want to run python bootstrap.py and then edit
buildout.cfg before running bin/buildout -v
See README.txt for details
-----------------------------------------------------------
Para activar un buildout hay que ejecutar el script bootstrap.py con el mismo python con que se desea trabajar:
$ cd unam.buildout
$ python2.4 bootstrap.py
...
...
...
$ bin/buildout -v
...
...
...
$ bin/instance fg
Un ejemplo de un buildout funcional se muestra a continuación:
# definicion de las partes que va a tener el buildout, cada parte es una
# sección de configuración y generalmente utiliza una receta específica
[buildout]
parts =
zope2
productdistros
instance
zopepy
# ligas adicionales a pypi.python.org donde pueden encontrarse eggs
find-links =
http://dist.plone.org
http://download.zope.org/ppix/
http://download.zope.org/distribution/
http://effbot.org/downloads
# Agregar eggs adicionales aquí
# elementtree es requerido por Plone
eggs =
elementtree
# Por cada paquete en desarrollo (dentro de src) se debe agregar una línea
# e.g.: develop = src/my.package
develop =
# Esta receta instala zope 2. Para usar la misma url que requiere plone se
# utiliza ${plone:zope2-url}. Es posible referirse con esta sintaxis a
# cualquier variable de una de las partes, así: ${parte:variable}
[zope2]
recipe = plone.recipe.zope2install
url = ${plone:zope2-url}
# Ligas a distribuciones de productos tradicionales de Zope.
# En nested-packages se pone el nombre del archivo (sin path) cuando
# una distribución incluye varios productos.
[productdistros]
recipe = plone.recipe.distros
urls =
nested-packages =
version-suffix-packages =
# esta receta inicializa la instancia de zope y utiliza los datos de las
# respuestas que se dieron al crear el buildout
[instance]
recipe = plone.recipe.zope2instance
zope2-location = ${zope2:location}
user = admin:admin
http-address = 8080
debug-mode = on
verbose-security = on
# Aquí se deben listar todos los eggs que zope debe poder ver
# incluyendo los de desarrollo que se definen arriba
# e.g. eggs = ${buildout:eggs} ${plone:eggs} my.package
eggs =
Plone
${buildout:eggs}
${plone:eggs}
# Activar la inicialización de zcml de los paquetes que lo requieran
# e.g. zcml = my.package my.other.package
zcml =
# Directorios donde zope buscará productos
products =
${buildout:directory}/products
${productdistros:location}
${plone:products}
# Interpreté de python generado con todos los paquetes activados en
# el path
[zopepy]
recipe = zc.recipe.egg
eggs = ${instance:eggs}
interpreter = zopepy
extra-paths = ${zope2:location}/lib/python
scripts = zopepy
En los comentarios en el código se explican las secciones del buildout.
Ver también
Artículos sobre replicación de proyectos Python.
El código fuente de este archivo esta hospedado en GitHub. Todos pueden actualizar y corregir errores en este documento con unos clic - sin necesidad de descargar.
Para mas información básica acerca de como actualizar este manual y referencia a sintaxis Sphinx, por favor consulte la guía Escribiendo y actualizando el manual.