Scl, gnu-screen, flask y python 2.7
Update (2014-05-28): Quiero aclarar que si sólo instalo python y screen me muestra la versión de python 2.7 en el shell corriendo adentro del screen.
Arranco en AWS desde 0 con un AMI de un RHEL 6.5, RHEL-6.5_GA-x86_64-7-Hourly2 (ami-aa8bfe9a). Instalo python 2.7, screen, pip y flask usando pip.
$ sudo yum -y install python27
$ sudo yum -y install screen
$ sudo scl enable python27 "easy_install pip"
$ sudo scl enable python27 "pip install flask"
Activo un shell con python27 y corro python
$ scl enable python27 bash
$ python --version
Python 2.7.5
Y veo que configuró la carga de bibliotecas para cargar las libs de python 2.7.
$ echo $LD_LIBRARY_PATH
/opt/rh/python27/root/usr/lib64
Pero, si hago lo mismo en un screen:
$ scl enable python27 bash
$ python --version
python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
Y no tiene configurada la carga de bibliotecas para cargar las libs de python 2.7.
$ echo $LD_LIBRARY_PATH
(no aparece nada :-( )
¿Alguien sabe que está pasando? ¿Qué hice mal?
Happy hacking,
Aureliano.
$ python --version
python: error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file: No such file or directory
Y no tiene configurada la carga de bibliotecas para cargar las libs de python 2.7.
$ echo $LD_LIBRARY_PATH
(no aparece nada :-( )
¿Alguien sabe que está pasando? ¿Qué hice mal?
Happy hacking,
Aureliano.
7 comentarios:
Tal vez deberías echarle una mirada a la documentación oficial de "SCL" donde dice:
http://storage6.static.itmages.com/i/14/0527/h_1401213606_8322708_5cec0d9804.png
Y el contenido de ese archivo es el siguiente...
http://storage7.static.itmages.com/i/14/0527/h_1401213511_9960036_212a59f22e.png
Por ende es un tema de variables de entorno...
Cómo cargues esos path a las variables de entorno, podés hacerlo haciendo un source o cargando los paths en tu .bashrc
Saludos
Mstaaravin.
Para evitar el problema de la pérdida de variables de entorno estoy invocando scl adentro del shell del screen (no afuera).
Si empezás de 0 y solo instalás python y screen, scl anda adentro del screen. El problema es que por algún motivo que no logro entender se rompe cuando instalo pip y flask.
Y cuando "se rompe" si ejecutás un env o export, ves los paths a /opt/rh en forma correcta...?
Por que es obvio que es un tema de variables de entorno nada mas, justamente es la ventaja de usa SCL, no importa si usás screen/tmux o cualquier otro siempre tenés que tener las variables de entorno cargadas
En mi opinión lo mejor es tener el contenido del archivo enable en el ~/.bashrc te olvidás
Poner el contenido de enable en el .bashrc de algunos usuarios es una buena idea :D. Lamentablemente no creo q solucione el problema q explico en el post, ya q es equivalente a correr scl enable adentro del screen.
Se te ocurre como puede ser q el egg de flask rompa scl enable adentro de un screen pero no afuera?
Me olvidé de contestar una parte, si hago echo $PATH adentro del shell q corre en el screen tiene el PATH consistente con correr scl enable python27 bash.
Sigo sin entender por qué es un problema, cargás las variables de entorno y listo...
El problema es que es un sistema que no hace lo que debería hacer. Si entendiera PORQUÉ no se setea la variable de entorno, y ese PORQUÉ fuera inocuo, la setería y listo.
Antes es meterse en quilombos grosos.
Publicar un comentario