[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