Antecedentes :
Como desarrollo programas de Python que deben ejecutarse en diferentes versiones de Python, he instalado diferentes versiones de Python en mi computadora.
Estoy usando FC 13, así que vino con python 2.6 preinstalado en /usr/bin/python2.6
y /usr/lib/python2.6
.
Instalé python 2.5 desde la fuente, y para mantener las cosas ordenadas, utilicé la --prefix=/usr
opción, que instaló python en /usr/bin/python2.5
y /usr/lib/python2.5
.
Ahora, cuando ejecuto python
mi solicitud, muestra que estoy usando la versión 2.5. Sin embargo, tengo algunos problemas con la instalación.
Gestión de paquetes :
Usando easy_install, los paquetes siempre se instalan en /usr/lib/python2.6/site-packages/
. Descargué setuptools
.egg para python 2.5 e intenté instalarlo, pero me da un error:
/usr/lib/python2.5/site-packages does NOT support .pth files
Parece que python2.5 no está en mi PYTHONPATH. Pensé que la instalación predeterminada se agregaría a PYTHONPATH, pero cuando escribo echo $PYTHONPATH
en el indicador, recibo una línea vacía.
Esto suena como una aplicación perfecta para virtualenv , una herramienta muy popular para crear entornos Python aislados. Este es un comando de muestra para especificar la versión de Python
fuente
virtualenv
sea la solución en este caso. Mira mi respuesta.Esto se debe a que distutils agrega la línea shebang a todos los scripts que se instalan. Si ejecuta el
easy_install
script directamente, se ejecuta con el intérprete con el que se instaló (de acuerdo con la línea shebang). Lo queeasy_install
se está ejecutando depende de tuPATH
noPYTHONPATH
. Si desea instalar un paquete en la instancia de Python 2.5, debe ejecutareasy_install
especificando el intérprete de Python para usar:Estrictamente hablando
virtualenv
no ayuda aquí, ya que debe crearse en el contexto de Python base, que es exactamente el mismo problema que con la ejecucióneasy_install
. Para eso sirve el--python
argumentovirtualenv
. Por alguna razóneasy_install
no proporciona un argumento análogo, por lo que debe ejecutarse con un intérprete de Python específico como se muestra arriba.fuente
También estoy usando Fedora 13 y
PYTHONPATH
no está configurado.Dentro de Python,
sys.path
le dará una lista de las rutas utilizadas para importar scripts.No estoy familiarizado con cómo
easy_install
decide su directorio de destino, pero estoy seguro de que podría haber un argumento de línea de comando que podría darle.Intente especificar en qué versión de Python se ejecutará
easy_install
precediendo su comando con la ruta completa a la Python que desea.Compruebe también si
easy_install
hay un enlace simbólico en bin a un script dentro de una versión de Python que haya instalado.fuente
Virtualenv es definitivamente un regalo del cielo aquí.
En mi configuración, tengo la variable de entorno
VIRTUALENV_USE_DISTRIBUTE
establecida en 1, de modo que se usa el paquete Distribute más moderno en lugar de las herramientas de configuración. Creé entornos virtuales para las dos versiones de Python en mi sistema así:Luego creé tres alias en
.bashrc
:Por lo tanto, puedo usar
py2
para cambiar a un valor predeterminado de Python 2.6 ypy3
para cambiar a un valor predeterminado de Python 3.2. Al ingresaridle
se ejecutará la versión de IDLE que sea apropiada para el entorno virtual en el que estoy.La instalación de paquetes en uno de estos entornos virtuales generalmente solo implica un
pip install
comando.fuente