En nuestra instalación de Openstack algo salió terriblemente mal. Ahora Python ya no funciona correctamente. No se encuentra la ruta del módulo:
root@controller:/root# keystone token-get
Traceback (most recent call last):
File "/usr/bin/keystone", line 6, in <module>
from keystoneclient.shell import main
ImportError: No module named shell
Si agrego la ruta del módulo a través de una variable de entorno, este error desaparece... (el otro error no importa en este momento)
root@controller:/root# export PYTHONPATH=/usr/lib/python2.7/dist-packages
root@controller:/root# keystone token-get
Authorization Failed: Unable to establish connection to http://controller:35357/v2.0/tokens
Detalle extraño: incluso sin configurar la variable de entorno python -m site parece conocer la ruta correcta:
sys.path = [
'/root',
'/usr/lib/python2.7',
'/usr/lib/python2.7/plat-x86_64-linux-gnu',
'/usr/lib/python2.7/lib-tk',
'/usr/lib/python2.7/lib-old',
'/usr/lib/python2.7/lib-dynload',
'/usr/local/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages',
'/usr/lib/python2.7/dist-packages/gtk-2.0',
]
USER_BASE: '/root/.local' (doesn't exist)
USER_SITE: '/root/.local/lib/python2.7/site-packages' (doesn't exist)
ENABLE_USER_SITE: True
Como Python tampoco funciona en Apache para el panel, no es una opción configurar la variable de entorno con "exportar" cada vez. Necesitamos solucionar el problema en otra parte.
¿Dónde está configurada la ruta de inclusión de Python?
ACTUALIZAR:
El orden de las rutas de biblioteca parece importar. Esto está funcionando:
PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages; keystone token-get
y esto no funciona:
PYTHONPATH=/usr/local/lib/python2.7/dist-packages:/usr/lib/python2.7/dist-packages; keystone token-get
Respuesta1
export PYTHONPATH=/usr/lib/python2.7/dist-packages:/usr/local/lib/python2.7/dist-packages; keystone token-get
funcionó para mí, gracias