2011-04-20 18 views
6

he configurado el proyecto de compilación (django para ser específico) que tiene que ejecutarse en una máquina antigua, funciona bien en mi sistema local con python 2.7.buildout - utilizando una versión diferente de python

En el servidor de producción ejecuta python 2.5 y quiero configurar el buildout que se descargaría y usaría 2.6, pero solo este proyecto no abarca todo el sistema.

Supongo que debería usar algún tipo de receta, pero ¿cómo y qué? No puedo encontrar uno Espero lograrlo solo usando el archivo buildout.cfg ..

Respuesta

8

Buildout es compatible específicamente con este escenario. Cada parte de un buildout puede usar su propio intérprete de python, o puede establecer un intérprete de python global para todas las partes. Esto se predetermina a la python utilizada para ejecutar buildout.

Para configurar el intérprete de python utilizado, establezca la opción python en el nombre de una parte que contiene una opción executable. Esto puede ser una parte que construye un nuevo intérprete de Python. Aquí hay un ejemplo:

[buildout] 
python = python 
parts = 
    python 

[python] 
recipe = zc.recipe.cmmi 
url = http://www.python.org/ftp/python/2.6.6/Python-2.6.6.tgz 
executable = ${buildout:directory}/parts/python/bin/python2.6 
extra_options= 
    --enable-unicode=ucs4 
    --with-threads 
    --with-readline 

Cualquier otra pieza en este buildout ahora usará el ejecutable de python 2.6.

Es posible que desee vincular simbólicamente la secuencia de comandos python en el directorio de compilación bin/ también; la siguiente parte sería hacer eso por usted:

[pythonbin] 
recipe = plone.recipe.command 
command = ln -s ${python:executable} ${buildout:bin-directory}/python 
+0

Lo sentimos, pero ¿cómo se diferencia de mi actualización? ¿Y cómo me ayuda? parece que pasé esta parte. ¡Gracias por la ayuda! – JackLeo

+0

Escribí esta respuesta * antes de * que haya editado su pregunta. No puedo responder preguntas que están siendo reformuladas, ¿verdad? ;-) –

+0

No. Gracias por intentarlo. :-) – JackLeo

-2

Normalmente, cada proyecto de construcción contiene un script bootstrap.py con el que inicialmente se ejecuta utilizando el intérprete de Python que necesita/desea para este proyecto. Al ejecutar bootstrap.py se creará/instalará localmente un buildout y todo lo que necesite. El patrón de uso típico es:

svn checkout <some_url_of_a_buildout_project> 
cd my_project 
/path/to/my/python bootstrap.py 
bin/buildout 
+0

'Por lo general, cada proyecto de construcción contiene un script bootstrap.py que se ejecuta inicialmente utilizando el intérprete de Python que necesita/desea para este proyecto. - Quiere decir si usaré 2.6 comandos bajo 2.5 python instalado en el sistema operativo que se descargará y usará automáticamente para el proyecto 2.6? No es un problema de 'cómo usar buildout?'. Es 'cómo configurarlo?' – JackLeo

+0

¿Qué es "2.6 comandos"? –

+0

python 2.6 libs/commands, etc. – JackLeo

2

Sea cual sea Python que se utiliza para hacer funcionar el bootstrap.py inicial es la que se utilizará para todo el proyecto. Todas las rutas harán referencia a esa python específica y se usarán los paquetes de sitio para esa python específica.

Ésta es una de las mejores cosas de buildout

Ésta es una de 32 bits de Python 2.6:

/Library/Frameworks/Python.framework/Versions/2.6/bin/python2.6 boostrap.py 

Ésta es una pitón de 64 bits 2.7:

/System/Library/Frameworks/Python.framework/Versions/2.7/bin/python bootstrap.py 

Ahora ir a buscar en el bin/it creado.

Luego haga su actual bin/buildout -c dev.cfg y observe los scripts en el contenedor. Para mi ejemplo 32 bits:

Para el primero que veo en mi archivo de Django:

#!/Library/Frameworks/Python.framework/Versions/2.6/Resources/Python.app/Contents/MacOS/Python 
... 
'/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages', 

La respuesta aceptada dice que necesita para compilar toda una pitón. Esto no es necesario ni aconsejable, aunque significaría que tiene un paquete de sitio completamente aislado. Pero hay formas más fáciles de decirle a buildout que no incluya los paquetes de sitio.

La respuesta de esaelPsnoroMoN es correcta, pero no describió la solución muy bien.(Lo ignoré yo mismo antes)

Cuestiones relacionadas