2009-07-10 14 views
15

Story: Una de las aplicaciones que tengo funciona en python 2.4 y otras en 2.6. Traté de hacer un enlace simbólico de python2.4 a python y las cosas comenzaron a desatarse en ubuntu jaunty. Ahora estoy descargando todas las dependencias de 2.4 e instalándolas usando python2.4 setup.py install. Las dependencias parecen ser infinitas.versiones de switch de python

Pregunta 1: ¿Cómo puedo decirle a cualquier marco que vaya y use la versión fonema pf python como day django que use 2.6 y diga mjango para usar 2.4? Algo así como decimos utilizar una base de datos de nombres de bases de datos de sintaxis.

Pregunta2: ¿Hay alguna manera más elegante de cambiar de una versión a otra ya que mi hackeo de enlace simbólico fue un desastre virtual?

Pregunta 3: ¿Puedo descargar un deb para decir hardy y hacer que jaunty crea que es para ella?

Respuesta

31

Use Virtualenv.

Puede encontrar más información aquí: Working with virtualenv.

Usando virtualenv puede crear un nuevo entorno de python virtual con la versión de Python que desee para cada proyecto o aplicación. Luego puede activar el entorno apropiado cuando lo necesite.

Para ampliar mi respuesta:

Puede instalar múltiples versiones de Python en su ordenador (no tengo 2.4, 2.5, 2.6 y 3.1 en mi máquina - instalo cada una de la fuente). Uso Mac, y mantengo mi sistema Python como el OS X configurado como predeterminado.

Yo uso easy_install para instalar paquetes. En Ubuntu puede obtener easy_install así:

sudo apt-get install python-setuptools 

Para instalar virtualenv luego hacer:

easy_install virtualenv 

que tienden a crear un nuevo virtualenv para cada proyecto que estoy trabajando y no se la des acceso a los paquetes de sitio globales. Esto mantiene todos los paquetes juntos y me permite tener las versiones específicas de todo lo que necesito.

virtualenv -p python2.6 --no-site-packages ~/env/NEW_DJANGO_PROJECT 

Y entonces cada vez que estoy haciendo todo lo relacionado con este proyecto lo activo:

source ~/env/NEW_DJANGO_PROJECT/bin/activate 

Si me quedo pitón ahora se utiliza este nuevo pitón. Si uso easy_install, instalo cosas en mi nuevo entorno virtual.

Por lo tanto, virtualenv debería ser capaz de resolver todos sus problemas.

+0

qué más podría haber pedido, gracias somuch – dhaval

+3

El comando activate tiene una barra inclinada entre bin y activate: source ~/env/NEW_DJANGO_PROJECT/bin/activate – CoverosGene

3

Un enfoque más básico que Virtualenv es la instalación lado a lado de dos versiones de Python.

Si hay una instalación existente, y se desea una segunda instalación en la misma ruta de raíz (por ejemplo,/usr/local), utilice este objetivo al realizar la instalación:

make altinstall 

Cuando su segunda instalación es Python 2.6, esto te dejará con un /usr/local/bin/python2.6 junto con el viejo/usr/local/bin/python.

Una manera simple de cambiar entre estas dos versiones es usar un alias de shell (alias python =/usr/local/bin/python2.6) en el intérprete de comandos donde invocas al intérprete. Pero esto no funcionará en las subcadenas e invocaciones de she-bang.

+0

alias suena mejor que symlink, déjame intentarlo thatx thx – dhaval

1

"Pregunta 1: ¿Cómo le digo a cualquier framework que vaya y use la versión fonema pf como day django para usar 2.6 y decir mjango para usar 2.4?"

Simplemente ejecútelos con la versión específica de python que necesiten. Ejecute mjango con /usr/bin/python2.4 y django con /usr/bin/python2.6. Tan fácil como eso.

"Pregunta 2: ¿Hay alguna manera más elegante de cambiar de una versión a otra ya que mi pirateo de enlaces simbólicos fue un desastre virtual?"

Sí, ver arriba. Tener dos instalaciones separadas de Python, y ejecutar explícitamente con las diferentes versiones.

"Pregunta 3: ¿Puedo descargar un deb para decir hardy y hacer que jaunty crea que es para ella?"

Eso generalmente funciona. Si no es así, es porque tiene dependencias que existen en Hardy, y no existen en Jaunty, y entonces no puedes.

Y aquí hay una pregunta 4 que no hizo, pero que debería haber hecho. ;)

"¿Hay alguna manera más fácil de descargar todos esos módulos de Python?"

Sí, la hay. Instale setuptools y use easy_install. No lo ayudará con las dependencias de la biblioteca para los módulos de Python que tienen código C y necesitan compilarse. Pero es ayuda con todos los demás. easy_install descargará e instalará todas las dependencias de Python del módulo en cuestión de una vez. Eso hace que sea mucho más rápido instalar módulos de Python.

+0

incluso me gusta easy_install así que me perdí de mencionarlo, generalmente ignoramos lo que más nos gusta – dhaval

+0

Y olvidé mencionar que puede cambiar los entornos con virtualenv activate, lo cual es útil si tiene muchos scripts. Ah bueno. –

3

Encontré http://github.com/utahta/pythonbrew mucho más fácil de instalar y usar que cualquier otra solución.

Sólo tienes que instalar y usted tendrá las siguientes opciones:

pythonbrew install 2.7.2 
pythonbrew use 2.7.2 # use 2.7.2 for a current terminal session 
pythonbrew switch 2.7.2 # use 2.7.2 by default system wide 
pythonbrew uninstall 2.7.2 

Nota: si utiliza el sistema operativo Linux preinstalado con Python, el cambio (en todo el sistema) a otra versión puede hacer que las cosas van mal, así que ten cuidado.

6

Pythonbrew es una herramienta mágica. Que también se puede llamar administrador de versiones de Python similar al administrador de versiones de RVM-Ruby, pero Pythonbrew está inspirado en Perlbrew.

Pythonbrew es un programa para automatizar la construcción e instalación de Python en los usuarios $ HOME.

Dependencies – curl 

Antes de instalar el Pythonbrew, Instalar “enrollarse” en la máquina, para instalar el uso rizo el siguiente comando en el terminal, el dar a la contraseña para el usuario cuando se le solicite.

$sudo apt-get install curl 

después de instalar el rizo, Ahora instale Pythonbrew, copiar y pegar los siguientes comandos en el terminal y escriba la contraseña para el usuario cuando se le solicite.

método recomendadas de instalación - Instalación simple

$ sudo easy_install pythonbrew 

Para completar la instalación, escriba el siguiente comando

$pythonbrew_install 

método alternativo de instalación:

Uso comando curl para descargar la última versión de pythonbrew de github.

curl -kLO http://github.com/utahta/pythonbrew/raw/master/pythonbrew-install 

Después de la descarga, el cambio “pythonbrew instalar” a “ejecutable”

chmod +x pythonbrew-install 

A continuación, ejecute el pythonbrew a instalar en el terminal de

./pythonbrew-install 

Ahora el Pythonbrew se ha instalado en el “Home Directory” es decir, /home/user/.pythonbrew

Ne xt, copia y pega el siguiente línea al final de ~/.bashrc

* NOTA: cambiar “user” a su nombre de usuario en el sistema

source /home/user/.pythonbrew/etc/bashrc 

Eso es todo! Cierre la terminal. Pasos para instalar las diferentes versiones de Python:

Abra un nuevo terminal, escriba el siguiente comando o cópielo y péguelo.

$pythonbrew install 2.6.6 

Esto instalará Python 2.6.6 y para instalar Python 2.7 o Python 3.2, cambiar el número de versión en el comando anterior.

$pythonbrew install 2.7 

o

$pythonbrew install 3.2 

Actualización: Si recibe el error al instalar a continuación, instalar usando el siguiente comando.

$pythonbrew install --force 2.7 

o

$pythonbrew install --force 3.2 

Cómo gestionar las diferentes versiones de Python instalado en el sistema

Por ejemplo, si Python 2.6.6, se instala Python 2.7 y Python 3.2 en su sistema, el cambio entre las versiones pueden hacerse de la siguiente manera:

Por defecto, Python 2.6.6 estará activo y en para cambiar a Python 2.7 use el siguiente comando

$pythonbrew switch 2.7 

El Python predeterminado se cambia a Python 2.7.

Ahora, para cambiar a Python 3.2 cambie el número de versión en el comando anterior.

$pythonbrew switch 3.2 

utilizar el comando siguiente para comprobar o una lista de las versiones de Python instalados

$pythonbrew list 

Use el comando siguiente para comprobar o una lista de las versiones de Python disponibles para instalar

$pythonbrew list -k 

Para desinstalar cualquier de la versión de Python instalada (por ejemplo, para desinstalar Python 2.7), use el siguiente comando.

$pythonbrew uninstall 2.7 

utilizar el comando siguiente para actualizar el Pythonbrew

$pythonbrew update 

Utilice el comando siguiente para deshabilitar el Pythonbrew y para activar la versión predeterminada

$pythonbrew off 

Disfrute de la experiencia de la instalación de múltiples versiones de Python en una sola máquina Linux/ubuntu!

+0

Parece que 'pythonbrew' ya no se encuentra en desarrollo activo. – ThomasW

1

pyenv es otro administrador de Python. El README.md en ese enlace tiene un buen conjunto de instrucciones, pero básicamente son:

$ cd 
$ git clone git://github.com/yyuu/pyenv.git .pyenv 

luego configurar su $ PATH.

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bash_profile 
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bash_profile 
$ echo 'eval "$(pyenv init -)"' >> ~/.bash_profile 

instalar las versiones deseadas de Python:

$ pyenv install 2.7.8 

Después de la instalación que necesita para ejecutar esto:

$ pyenv rehash 

luego cambiar a la versión de Python que desea ejecutar, para el shell:

$ pyenv shell 2.7.8 
0

Mover al directorio del proyecto:

Crear un entorno: virtualenv -p python2.7 --no-site-packages ~/env/twoseven

luego activar su fuente: source ~/env/twoseven/bin/activate