Crear un entorno virtual de Python 3

13

Instalé python3-virtualenven Lubuntu 15.1 usando el paquete oficial de Ubuntu apt-get install python3-virtualenv. La documentación oficial indica que un simple virtualenv .en el directorio de mi proyecto debería ser suficiente para crear el venv. Esto no hace nada, porque which virtualenvno hace nada. (Nada de which python-virtualenvy which python3-virtualenvtambién).

La información del paquete, una vez instalada, dice que se instaló /usr/lib/python3/dist-packages/virtualenv.py, por lo que invoco esto en python3. Me da esto:

$ python3 /usr/lib/python3/dist-packages/virtualenv.py .
Running virtualenv with interpreter /usr/bin/python2
New python executable in ./bin/python2
Also creating executable in ./bin/python
Installing setuptools, pip...done.

Sí, cuando miro, todo en ./bin es python2. ¿Python3-virtualenv de ubuntu es un paquete ficticio para python2?

La documentación oficial de Python dice que use un paquete diferente: python3-venv . Esto parece funcionar cuando yo pyvenv ., con cosas de python3 en el ./bindirectorio.

¿Cómo puedo crear con éxito un Python 3 virtualenv?

Escher
fuente
El parche que cambia este comportamiento en Debian. salsa.debian.org/python-team/modules/python-virtualenv/blob/… Ojalá entendiera el proceso de pensamiento utilizado cuando se agregó este parche.
Winny el

Respuestas:

24

venves un script de conveniencia para crear entornos virtuales, pero no reemplaza completamente todo lo que virtualenvpuede hacer. Sin embargo, usar cualquiera está bien para la mayoría de los casos. virtualenvNo es obsoleto.

python3 -m venvfunciona después de la instalación python3-venvporque Debian elimina algunos scripts del paquete base de Python. python3-virtualenvno pone el virtualenvscript en su camino por alguna razón, pero lo python-virtualenvhace, y funcionará bien para cualquier versión.

No es importante para qué versión virtualenvestá instalada, puede generar envs para cualquier versión instalada al pasar -p pythonX(donde X es la versión). venv, siendo más simple, solo creará envs de la versión desde la que se ejecuta, y solo está disponible desde 3.3.

$ sudo apt-get install python-virtualenv
$ virtualenv -p python3 env
$ source ./env/bin/activate
$ sudo apt-get install python3-venv
$ python3 -m venv env
$ source ./env/bin/activate
davidismo
fuente