it-swarm-es.tech

Usando diferentes versiones de Python

Fondo:

Como desarrollo python programas que deben ejecutarse en diferentes versiones 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, usé el --prefix=/usr opción, que instaló python en /usr/bin/python2.5 y /usr/lib/python2.5.

Ahora, cuando ejecuto python mi indicador muestra que estoy usando la versión 2.5. Sin embargo, tengo algunos problemas con la instalación.

Gestión de paquetes:

Con 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 momento oportuno, acabo de recibir una línea vacía.

21
Alex

La forma recomendada de tener múltiples Python versiones instaladas es instalar cada una desde la fuente; felizmente coexistirán juntas. Luego puede usar virtualenv con el intérprete apropiado para instalar las dependencias requeridas (usando pip o easy_install El truco para una instalación más fácil de múltiples intérpretes desde el origen es utilizar:

Sudo make altinstall

en lugar del más habitual "Sudo make install". Esto agregará el número de versión al ejecutable (por lo que tendría python-2.5, python-2.6, python-3.2, etc.) evitando así conflictos con la versión del sistema de Python.

20
VPeric

Esto suena como una aplicación perfecta para virtualenv , una herramienta muy popular para crear entornos aislados Python. Este es un comando de muestra para especificar la versión de Python

$ virtualenv --python=/usr/bin/python2.6 myvirtualenv
13
Adam Byrtek

Utilizando easy_install, los paquetes siempre se instalan en /usr/lib/python2.6/site-packages/

Esto se debe a que distutils agrega la línea Shebang a todos los scripts que se instalan. Si tu corres easy_install script directamente se ejecuta con el intérprete con el que se instaló (según la línea Shebang). Cual easy_install se está ejecutando depende de su PATH no PYTHONPATH. Si desea instalar un paquete en Python 2.5 instancia, debe ejecutar easy_install especificando Python intérprete a utilizar:

/usr/bin/python2.5/python easy_install ...

Estrictamente hablando virtualenv no ayuda aquí ya que debe crearse en el contexto de base Python que es exactamente el mismo problema que con ejecutar easy_install. Eso es lo que --python argumento de virtualenv es para. Por alguna razón easy_install no proporciona un argumento análogo, por lo que debe ejecutarse con un intérprete específico Python como se muestra arriba.

5
Piotr Dobrogost

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 habrá un argumento de línea de comando que podría darle.

Intente especificar qué python versión para ejecutar easy_install debajo precediendo su comando con la ruta completa al python que desea.

También verifique si easy_install es un enlace simbólico en bin a un script dentro de una python versión que ha instalado.

2
bkersten

Virtualenv es definitivamente un regalo del cielo aquí.

En mi configuración, tengo la variable de entorno VIRTUALENV_USE_DISTRIBUTE establecido en 1, para que se use 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í:

$ virtualenv -p python2.6 py2
$ virtualenv -p python3.2 py3

Luego creé tres alias en .bashrc:

alias py2='source $HOME/py2/bin/activate'
alias py3='source $HOME/py3/bin/activate'
alias idle='python -m idlelib.idle'

Así puedo usar py2 para cambiar a un valor predeterminado de Python 2.6 y py3 para cambiar a un valor predeterminado de Python 3.2. Al ingresar idle se ejecutará la versión de IDLE adecuada 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.

1
pythoneer