[pyar] Buildout + compilar python adentro, crear virtualenv y meterle eggs, como hago ?! :)

Pablo Ziliani pablo en kultroom.com
Mar Nov 30 13:06:08 ART 2010


Hola Emiliano, no sé si tengo suficiente experiencia para poder 
ayudarte, pero hago el intento en vista de que nadie te contestó aun.

On 11/30/2010 10:35 AM, Emiliano Dalla Verde Marcozzi wrote:
> Hola querida lista !
> Paso a explicar ... tengo este buildout.cfg
>
> [buildout]
>
> parts =
>     at
>     python
>     pythonbin
>
> # de aca me traigo los eggs mios, yeah tengo onw pypi
> find-links =
> http://code.airtrack.ovz:9091/cheese/cheeseshop/simple
>
> [at]
> recipe = zc.recipe.egg
> eggs =
>     at.orm
>     at.amqp
>     at.map
>     at.utiles
>     at.cp
>     srv.cp
>
> # recipe que baja, compila e instala python
> [python]
> recipe = zc.recipe.cmmi==1.3.1
> url = http://www.python.org/ftp/python/2.6/Python-2.6.tgz
> executable = ${buildout:directory}/parts/python/bin/python2.6
> extra_options=
>     --enable-unicode=ucs4
>     --with-threads
>     --with-readline
>
> # recipe que tira comandos, hacemos enlace simbolico del interprete
> # de python a el bin/ del buildout
> [pythonbin]
> recipe = plone.recipe.command
> command = ln -s ${python:executable} ${buildout:bin-directory}/python
>           ${python:executable} ez_setup.py -U setuptools
>
> Bueno, mi dificultad cae en meter los eggs que bajo de [at] en el 
> interprete
> de python mediante el buildout ... cosa de poder usarlos x) ... ideas 
> de como hacer esto ?

¿No estás haciendo las cosas al revés? Quizás no conozca todas las 
posibilidades de buildout, pero por lo general uno instala paquetes al 
interprete que quiere usar, no un intérprete a los paquetes que instaló 
para OTRO intérprete (el que está corriendo el buildout).

Buscando un poco por ahí vi este buildout.cfg que quizás ya hayas visto:

     - https://bitbucket.org/zgwmike/360go/src/tip/buildout.cfg

Obviamente no lo probé (tampoco el tuyo), así que no tengo idea si 
funciona o no, pero fijate en la sección [virtualenv] cómo se llama al 
nuevo intérprete para reescribir los paths del virtualenv que instaló 
con el intérprete "anterior". Luego se puede usar ese virtualenv para 
instalar las demás dependencias. Con algo más trabajo podrías volver a 
correr un nuevo bootstrap/buildout con ese intérprete, pero a esta 
altura quizás te convenga directamente escribir un nuevo recipe.

Por otra parte ¿estás seguro de que realmente necesitás instalar un 
intérprete propio?
Es bastante común ver cosas como este buildout.cfg para django que estoy 
usando:

[buildout]
parts =
     python
     django
     (...)

eggs =
     south
     (...)

[python]
recipe = zc.recipe.egg
interpreter = python
eggs = ${buildout:eggs}
extra-paths =
   ${buildout:directory}/mi_proyecto

[django]
recipe = djangorecipe
eggs = ${buildout:eggs}
extra-paths =
   ${python:extra-paths}
(...)

El truco está en la opción ${python:interpreter}, que crea un wrapper 
que toca el sys.path y luego llama al python con que se ejecutó el buildout.
La ventaja, es que funciona ahí donde zc.recipe.cmmi 
(configure/make/make install) no; por ejemplo, en Windows. La desventaja 
es que tenés que tener instalado previamente el python que querés usar.

> Casi olvido ... la parte de virtualenv por ahi no es necesaria, ya que 
> al compilarse el
> python desde los fuentes, es un python 'isolado'.

o aislated...

Sé que no es muy útil lo que te digo, pero por ahí te ayuda a pensar el 
problema.

Suerte,
Pablo



More information about the pyar mailing list