Créer un environnement virtuel Python 3

13

J'ai installé python3-virtualenvsur Lubuntu 15.1 en utilisant le package officiel Ubuntu apt-get install python3-virtualenv. La documentation officielle indique qu'un simple virtualenv .dans mon répertoire de projet devrait être suffisant pour créer le venv. Cela ne fait rien, car which virtualenvne fait rien. (Rien de which python-virtualenvet which python3-virtualenvaussi).

Les informations sur le paquet, une fois installé, indiquent qu'il a installé /usr/lib/python3/dist-packages/virtualenv.py, donc j'invoque cela sous python3. Cela me donne ceci:

$ 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.

Oui, quand je regarde, tout dans ./bin est python2. Python3-virtualenv d'ubuntu est-il un paquet factice pour python2?

La documentation officielle de python indique d'utiliser un package différent: python3-venv . Cela semble fonctionner quand je pyvenv ., avec des trucs python3 dans le ./binrépertoire.

Comment créer avec succès un virtualenv Python 3?

Escher
la source
Le patch qui change ce comportement dans Debian. salsa.debian.org/python-team/modules/python-virtualenv/blob/… J'aimerais avoir compris le processus de réflexion utilisé lors de l'ajout de ce patch.
Winny

Réponses:

24

venvest un script pratique pour créer des envs virtuels, mais ne remplace pas complètement tout ce que virtualenvpeut faire. Cependant, l'utilisation de l'un ou l'autre est très bien dans la plupart des cas. virtualenvn'est pas obsolète.

python3 -m venvfonctionne après l'installation python3-venvcar Debian supprime certains scripts du paquet Python de base. python3-virtualenvne place pas le virtualenvscript sur votre chemin pour une raison quelconque, mais le python-virtualenvfait et fonctionnera bien pour l'une ou l'autre version.

Il n'est pas important pour quelle version virtualenvest installée, il peut produire des envs pour n'importe quelle version installée en passant -p pythonX(où X est la version). venv, étant plus simple, ne créera que des envs de la version à partir de laquelle il est exécuté, et n'est disponible que depuis la 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
davidisme
la source