Usa diferentes versiones de Python con virtualenv



virtualenvwrapper (13)

En subsistema windows para linux:

  1. Crear entorno para python3:

    virtualenv --python=/usr/bin/python3 env
    
  2. Actívalo:

    source env/bin/activate
    

https://ffff65535.com

Tengo un sistema Debian actualmente en ejecución con python 2.5.4. Tengo virtualenv correctamente instalado, todo funciona bien. ¿Existe la posibilidad de que pueda usar un virtualenv con una versión diferente de Python?

Compilé Python 2.6.2 y me gustaría usarlo con algo de virtualv. ¿Es suficiente sobreescribir el archivo binario? ¿O tengo que cambiar algo con respecto a las bibliotecas?


Aún más fácil, usando la sustitución de comandos para encontrar python2 por ti:

virtualenv -p $(which python2) <path/to/new/virtualenv/>

O al usar virtualenvwrapper:

mkvirtualenv -p $(which python2) <env_name>


El enfoque -p funciona bien, pero debe recordar utilizarlo siempre. Si su objetivo es cambiar a una versión más reciente de Python en general, eso es un dolor y también puede llevar a errores.

Su otra opción es establecer una variable de entorno que haga lo mismo que -p . Configúralo a través de tu archivo ~/.bashrc o donde sea que manejes variables de entorno para tus sesiones de inicio de sesión:

export VIRTUALENV_PYTHON=/path/to/desired/version

Luego, virtualenv usará eso cada vez que no especifique -p en la línea de comandos.


En el mac utilizo pyenv y virtualenvwrapper. Tuve que crear un nuevo virtualenv. Necesitas un homebrew que asumiré que has instalado si estás en un mac, pero solo por diversión:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"


brew install pyenv
pyenv install 2.7.10
pyenv global 2.7.10
export PATH=/Users/{USERNAME}/.pyenv/versions/2.7.10/bin:$PATH
mkvirtualenv -p ~/.pyenv/versions/2.7.10/bin/python  {virtual_env_name}

También congelé mis requisitos primero, así que simplemente podría volver a instalar en el nuevo virtualenv con:

pip install -r requirements.txt

Estos dos comandos deberían funcionar bien para un novato

virtualenv -p python2 myenv (para python2)

virtualenv -p python3 myenv (para python3)


Estos son pasos cuando se encuentra en un entorno de alojamiento compartido y necesita instalar y completar Python desde la fuente y luego crear venv desde su versión de Python. Para Python 2.7.9 harías algo así:

mkdir ~/src
wget http://www.python.org/ftp/python/2.7.9/Python-2.7.9.tgz
tar -zxvf Python-2.7.9.tgz
cd Python-2.7.9
mkdir ~/.localpython
./configure --prefix=$HOME/.localpython
make
make install

env virtual

cd ~/src
wget https://pypi.python.org/packages/5c/79/5dae7494b9f5ed061cff9a8ab8d6e1f02db352f3facf907d9eb614fb80e9/virtualenv-15.0.2.tar.gz#md5=0ed59863994daf1292827ffdbba80a63
tar -zxvf virtualenv-15.0.2.tar.gz
cd virtualenv-15.0.2/
~/.localpython/bin/python setup.py install
virtualenv ve -p $HOME/.localpython/bin/python2.7
source ve/bin/activate   

Naturalmente, esto se puede aplicar a cualquier situación en la que desee replicar el entorno exacto en el que trabaja y despliega.


Mac OSX 10.6.8 (Snow Leopard):

1) Cuando haces pip install virtualenv , el comando pip se asocia con una de tus versiones de python, y virtualenv se instala en esa versión de python. Tu puedes hacer

 $ which pip   

Para ver qué versión de python es. Si ves algo como:

 $ which pip
 /usr/local/bin/pip

entonces hazlo:

$ ls -al /usr/local/bin/pip
lrwxrwxr-x  1 root  admin  65 Apr 10  2015 /usr/local/bin/pip ->
../../../Library/Frameworks/Python.framework/Versions/2.7/bin/pip

Puedes ver la versión de python en la salida.

De forma predeterminada, esa será la versión de python que se utilizará para cualquier nuevo entorno que cree. Sin embargo, puede especificar cualquier versión de Python instalada en su computadora para usar dentro de un nuevo entorno con la -p flag :

$ virtualenv -p python3.2 my_env  
Running virtualenv with interpreter /usr/local/bin/python3.2  
New python executable in my_env/bin/python  
Installing setuptools, pip...done.  

virtualenv my_env creará una carpeta en el directorio actual que contendrá los archivos ejecutables de Python y una copia del pip [comando] que puede usar para instalar otros paquetes.

http://docs.python-guide.org/en/latest/dev/virtualenvs/

virtualenv simplemente copia python desde una ubicación en su computadora al directorio my_env / bin / recién creado.

2) El sistema python está en /usr/bin , mientras que las distintas versiones de python que instalé se instalaron, de manera predeterminada, en:

 /usr/local/bin

3) Los diversos pitones que instalé tienen nombres como python2.7 o python3.2 , y puedo usar esos nombres en lugar de las rutas completas.

======== VIRTUALENVWRAPPER =========

1) Tuve algunos problemas para hacer que virtualenvwrapper funcionara. Esto es lo que terminé poniendo en ~/.bash_profile :

export WORKON_HOME=$HOME/.virtualenvs
export PROJECT_HOME=$HOME/django_projects  #Not very important -- mkproject command uses this
#Added the following based on: 
#http://.com/questions/19665327/virtualenvwrapper-installation-snow-leopard-python
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7 
#source /usr/local/bin/virtualenvwrapper.sh
source /Library/Frameworks/Python.framework/Versions/2.7/bin/virtualenvwrapper.sh

2) La -p option funciona de manera diferente con virtualenvwrapper: tengo que especificar la ruta completa al intérprete de python para usar en el nuevo entorno (cuando no quiero usar la versión de python predeterminada):

$ mkvirtualenv -p /usr/local/bin/python3.2 my_env
Running virtualenv with interpreter /usr/local/bin/python3
New python executable in my_env/bin/python
Installing setuptools, pip...done.
Usage: source deactivate

removes the 'bin' directory of the environment activated with 'source
activate' from PATH. 

A diferencia de virtualenv, virtualenvwrapper creará el entorno en la ubicación especificada por la variable de entorno $ WORKON_HOME. Eso mantiene todos tus ambientes en un solo lugar.


Para Mac (High Sierra), instale virtualenv en python3 y cree un virtualenv para python2:

$ python3 -m virtualenv --python=python2 vp27
$ source vp27/bin/activate
(vp27)$ python --version
Python 2.7.14

Supongamos que actualmente tiene Python 2.7 instalado en su virtualenv. Pero si quieres usar python3.2 , python3.2 actualizar esto con:

$ virtualenv --python=/usr/bin/python3.2 name_of_your_virtualenv

A continuación, active su virtualenv por:

$ source activate name_of_your_virtualenv

y luego haga: python --version en shell para verificar si su versión está actualizada.


ACTUALIZACIÓN: Para Python3.6, el siguiente script de pyvenv está en desuso. En su lugar, venv crear el entorno virtual con el siguiente comando:

python3 -m venv <myenvname>

Para python3 (3.3+), use el método anterior o el comando pyvenv venv .

pyvenv /path/to/new/virtual/environment

Tenga en cuenta que venv no permite crear virtualenv con otras versiones de Python. Para eso, instala y usa el package virtualenv .


, las respuestas anteriores son correctas y funcionan bien en sistemas basados ​​en Unix como Linux y MAC OS X.

Intenté crear virtualenv para Python2 y Python3 con los siguientes comandos.

Aquí he usado venv2 y venv3 como sus nombres para Python2 y Python3 respectivamente.

Python2 »

MacBook-Pro-2:~ admin$ virtualenv venv2 --python=`which python2`
Running virtualenv with interpreter /usr/local/bin/python2
New python executable in /Users/admin/venv2/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv2/bin/
activate        easy_install        pip2.7          python2.7
activate.csh        easy_install-2.7    python          wheel
activate.fish       pip         python-config
activate_this.py    pip2            python2
MacBook-Pro-2:~ admin$ 

Python3 »

MacBook-Pro-2:~ admin$ virtualenv venv3 --python=`which python3`
Running virtualenv with interpreter /usr/local/bin/python3
Using base prefix '/Library/Frameworks/Python.framework/Versions/3.6'
New python executable in /Users/admin/venv3/bin/python3
Also creating executable in /Users/admin/venv3/bin/python
Installing setuptools, pip, wheel...done.
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ ls venv3/bin/
activate        easy_install        pip3.6          python3.6
activate.csh        easy_install-3.6    python          wheel
activate.fish       pip         python-config
activate_this.py    pip3            python3
MacBook-Pro-2:~ admin$ 

Comprobando los lugares de instalación de Python

MacBook-Pro-2:~ admin$ which python2
/usr/local/bin/python2
MacBook-Pro-2:~ admin$ 
MacBook-Pro-2:~ admin$ which python3
/usr/local/bin/python3
MacBook-Pro-2:~ admin$ 

Simplemente use la --python (o short -p ) al crear su instancia de virtualenv para especificar el ejecutable de Python que desea usar, por ejemplo:

virtualenv --python=/usr/bin/python2.6 <path/to/new/virtualenv/>

Nota: para Python 3.3 o posterior, consulte la answer de Aelfinn a continuación. [Nota del editor: Sé que esto debería ser normalmente un comentario, no una edición, pero se ocultaría un nuevo comentario, y acabo de pasar 45 minutos para desentrañar errores porque esta importante respuesta estaba oculta bajo tres o cuatro respuestas de loros. Solo estoy tratando de ahorrarle tiempo a todos aquí.]






virtualenvwrapper