Pregunta Usa una versión diferente de Python con virtualenv


Tengo un sistema Debian actualmente ejecutándose 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?

Recopilé Python 2.6.2 y me gustaría usarlo con algunos virtualenv. ¿Es suficiente sobrescribir el archivo binario? ¿O tengo que cambiar algo con respecto a las bibliotecas?


777
2017-10-07 21:11


origen


Respuestas:


Solo usa el --python (o corto -p) al crear su instancia de virtualenv para especificar el ejecutable de Python que desea usar, p. ej .:

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

nótese bien por Python 3.3 o más tarde, refiérase a The Aelfinn's responder abajo. [Nota del editor: Sé que esto normalmente debería ser un comentario, no una edición, pero un nuevo comentario estaría oculto, y acabo de pasar 45 minutos desenredando los errores porque esta importante respuesta fue enterrada bajo tres o cuatro respuestas del loro. Solo estoy tratando de ahorrarle tiempo a todos aquí.]


1170
2017-10-07 21:33



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

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 puede aplicarse a cualquier situación en la que desee replicar el entorno exacto en el que trabaja y despliega.


164
2017-07-02 22:17



ACTUALIZAR:  Para Python3.6, el siguiente pyvenv script está en desuso. En lugar,   los documentos de Python sugieren creando el entorno virtual con el siguiente comando:

python3 -m venv <myenvname>

Para python3 (3.3+), use el método anterior o el guión  pyvenv mando.

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 virtualenv  paquete.


132
2017-09-26 22:46



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

90
2017-11-04 15:15



En Windows para mí, esto funciona:

virtualenv --python=c:\Python25\python.exe envname

sin el python.exe tengo WindowsError: [Error 5] Access is denied  Tengo Python2.7.1 instalado con virtualenv 1.6.1, y quería Python 2.5.2.


63
2017-07-31 21:04



Hay una manera más fácil,

virtualenv venv --python=python2.7

Gracias a un comentario, esto solo funciona si tiene instalado python2.7 a nivel del sistema (por ejemplo, /usr/bin/python2.7).

De lo contrario, si está utilizando homebrew puede usar la ruta para darle lo que desea.

virtualenv venv --python=/usr/local/bin/python

Puede encontrar la ruta a su instalación de python con

which python

Esto también funcionará con python 3.

which python3
>> /usr/local/bin/python3
virtualenv venv --python=/usr/local/bin/python3

En definitiva, se condensa a:

virtualenv venv -p `which python`
virtualenv venv -p `which python3`

56
2017-11-01 11:59



Mac OSX 10.6.8 (Snow Leopard):

1) Cuando lo haces pip install virtualenv, el comando pip está asociado 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 esa. 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 manera predeterminada, esa será la versión de python que se usa para cualquier entorno nuevo que cree. Sin embargo, puede especificar cualquier versión de python instalada en su computadora para usar dentro de un nuevo entorno con el -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 de la pipa   [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 tu computadora en el directorio my_env / bin / recién creado.

2) El sistema python está en /usr/bin, mientras que las diversas versiones de Python que instalé estaban, por defecto, instaladas en:

 /usr/local/bin

3) Las diversas pitones que instalé tienen nombres como python2.7 o python3.2, y puedo usar esos nombres en lugar de caminos completos.

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

1) Tuve algunos problemas para que virtualenvwrapper funcione. 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://stackoverflow.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) El -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 predeterminada de python):

$ 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 entornos en un solo lugar.


26
2018-01-15 20:43



Supongamos que actualmente tiene instalado Python 2.7 en su Virtualenv. Pero quiero hacer uso de python3.2. Deberías actualizar esto con:

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

Luego activa tu virtualenv y escribe python --version en shell para verificar si su versión ahora está actualizada.


15
2017-12-30 05:51



Puedes llamar virtualenv con la versión de Python que quieras. Por ejemplo:

python3 -m virtualenv venv

O alternativamente, apunte directamente a su camino virtualenv. p.ej. para ventanas:

c:\Python34\Scripts\virtualenv.exe venv

Y al ejecutar:

venv/bin/python

Python 3.5.1 (v3.5.1:37a07cee5969, Dec  5 2015, 21:12:44) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

puedes ver la versión de python instalada en el entorno virtual


10
2017-12-12 23:11



los -p el enfoque funciona bien, pero debe recordar usarlo siempre. Si su objetivo es cambiar a una versión más nueva de Python en general, eso es un problema y también puede conducir a errores.

Su otra opción es establecer una variable de entorno que haga lo mismo que -p. Configura esto a través de tu ~/.bashrc archivo o donde quiera que administre variables de entorno para sus sesiones de inicio de sesión:

export VIRTUALENV_PYTHON=/path/to/desired/version

Entonces virtualenv usará eso cada vez que no especifique -p en la línea de comando.


7
2017-08-05 20:57



En mac, uso pyenv y virtualenvwrapper. Tuve que crear un nuevo virtualenv. Necesitas 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 pude reinstalar en el nuevo virtualenv con:

pip install -r requirements.txt

6
2017-09-02 22:04