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.6y /usr/lib/python2.6.
Instalé python 2.5 desde la fuente, y para mantener las cosas ordenadas, utilicé la --prefix=/usropción, que instaló python en /usr/bin/python2.5y /usr/lib/python2.5.
Ahora, cuando ejecuto pythonmi 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 $PYTHONPATHen 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
virtualenvsea 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_installscript directamente, se ejecuta con el intérprete con el que se instaló (de acuerdo con la línea shebang). Lo queeasy_installse está ejecutando depende de tuPATHnoPYTHONPATH. Si desea instalar un paquete en la instancia de Python 2.5, debe ejecutareasy_installespecificando el intérprete de Python para usar:Estrictamente hablando
virtualenvno 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--pythonargumentovirtualenv. Por alguna razóneasy_installno 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
PYTHONPATHno está configurado.Dentro de Python,
sys.pathle dará una lista de las rutas utilizadas para importar scripts.No estoy familiarizado con cómo
easy_installdecide 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_installprecediendo su comando con la ruta completa a la Python que desea.Compruebe también si
easy_installhay 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_DISTRIBUTEestablecida 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
py2para cambiar a un valor predeterminado de Python 2.6 ypy3para cambiar a un valor predeterminado de Python 3.2. Al ingresaridlese 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 installcomando.fuente