2012-09-23 9 views
6

Deseo compilar Python 2.7.3 de la fuente. El sistema operativo es OpenSUSE 11.4 x86_64, que ya proporciona Python 2.7. Me gustaría utilizar 2.7.3 para los últimos parches de seguridad, pero es un sistema compartido, así que no puedo jugar con el intérprete de Python del sistema.compilar Python 2.7.3 de la fuente en un sistema con Python 2.7 ya

puedo compilar usando ./configure --prefix=/opt/python --enable-shared. No hay errores de configuración, por lo que I make. Nuevamente no hay errores. Hago un make install (no creo que necesito make altinstall, ya que este prefijo de instalación en /opt/python no está en uso todavía).

Cuando trato de ejecutar el nuevo binario /opt/python/bin/python, Python anuncia su versión como 2.7, 2.7.3 no. La única forma que he encontrado para corregir esto es mover el sistema /usr/lib64/libpython2.7.so.1.0 y vincularlo simbólicamente al /opt/python/lib/python/libpython2.7.so.1.0. Esto funciona y Python anuncia que es 2.7.3, pero esto rompe el sistema Python.

¿Hay alguna forma de conseguir los dos coexistir, por ejemplo, obteniendo el /opt/python para usar su propio libpython? Aparte de suministrar LD_LIBRARY_PATH en tiempo de ejecución. ¿Hay una solución de tiempo de compilación? Gracias.

+0

Mira en env virtuales – Tim

+0

¿Necesita '- -enable-shared'? He construido un billón de veces de Python personalizado (sin '--enable-shared') en varias distribuciones y lo único que se necesita para usar este Python es modificar' PATH'. –

+0

Tenga en cuenta que si construye Python sin '--enable-shared', obtendrá un archivo ejecutable enorme que contiene toda la biblioteca compartida. La biblioteca compartida es necesaria para la incrustación, por lo que las distribuciones de Linux se compilan con '--enable-shared'. – user4815162342

Respuesta

15

para evitar tener que especificar la ruta de la biblioteca de tiempo de ejecución utilizando LD_LIBRARY_PATH cada vez que se inicia Python, puede especificar que en tiempo de compilación usando la opción -rpath enlazador:

./configure --enable-shared --prefix=/opt/python \ 
      LDFLAGS=-Wl,-rpath=/opt/python/lib 
+1

Perfecto - ¡muchas gracias! –