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 algún virtualenv. ¿Es suficiente sobreescribir el archivo binario? ¿O tengo que cambiar algo con respecto a las bibliotecas?
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
Nota: para Python 3.3 o posterior, consulte la respuesta de Aelfinn a continuación.
ACTUALIZACIÓN: Para Python3.6, el siguiente script de pyvenv
está en desuso. En cambio, Python Docs sugiere crear el entorno virtual con el siguiente comando:
python3 -m venv
Para python3 (3.3+), use el método anterior o el comando pyvenv
script .
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 paquete virtualenv
.
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.
virtualenv --python=/usr/bin/python2.6
Hay una manera más fácil,
virtualenv venv --python=python2.7
Gracias a un comentario, esto solo funciona si tienes python2.7 instalado 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 última instancia, la condensación de:
virtualenv venv -p `which python` virtualenv venv -p `which python3`
Bajo Windows para mi esto funciona:
virtualenv --python=c:\Python25\python.exe envname
sin el python.exe
obtuve WindowsError: [Error 5] Access is denied
Tengo Python2.7.1 instalado con virtualenv 1.6.1, y quería python 2.5.2.
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 [comando] pip 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.
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://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) 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.
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.
Estos dos comandos deberían funcionar bien para un novato
virtualenv -p python2 myenv
(para python2)
virtualenv -p python3 myenv
(para python3)
Puede llamar a virtualenv
con la versión de python que desee. Por ejemplo:
python3 -m virtualenv venv
O alternativamente, apunte directamente a su ruta virtualenv. Por ejemplo, para Windows:
c:\Python34\Scripts\virtualenv.exe venv
Y ejecutando:
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 un entorno virtual.
El enfoque -p
funciona bien, pero debe recordar usarlo siempre. Si su objective es cambiar a una versión más nueva 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 las 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.
Para Mac (High Sierra), instale virtualenv en python3 y cree un virtualenv para python2:
$ python3 -m pip install virtualenv $ python3 -m virtualenv --python=python2 vp27 $ source vp27/bin/activate (vp27)$ python --version Python 2.7.14
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
Aún más fácil, utilizando la sustitución de comandos para encontrar python2 para usted:
virtualenv -p $(which python2)
O al usar virtualenvwrapper:
mkvirtualenv -p $(which python2)
Crear entorno para python3:
virtualenv --python=/usr/bin/python3 env
Actívalo:
source env/bin/activate
Sí , 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$
Funciono para mi
sudo apt-get install python3-minimal virtualenv --no-site-packages --distribute -p /usr/bin/python3 ~/.virtualenvs/py3
En las ventanas:
py -3.4x32 -m venv venv34
o
py -2.6.2 -m venv venv26
Esto utiliza el py
que encontrará el ejecutable de python correcto para usted (suponiendo que lo tenga instalado).
virtualenv -p python3 myenv
Enlace a Creando virtualenv
Para los sistemas Debian (debian 9) en 2019, descubrí una solución simple que puede resolver el problema desde el entorno virtual.
Supongamos que el entorno virtual se crearon a través de:
python3.7 -m venv myenv
pero solo tiene versiones de python2
y python2.7
, y necesita las características recientes de python3.7.
Entonces, simplemente ejecutando el comando:
(myvenv) $ python3.7 -m venv --upgrade /home/username/path/to/myvenv/
agregará paquetes python3.7 si ya están disponibles en su sistema.
Este fue un error con virtualenv. Sólo la actualización de su pip debe ser la solución.
pip install --upgrade virtualenv