pyvenv vs venv vs python-virtualenv vs virtualenv et python 3

13
malikarumi@Tetouan2:~$ pip install virtualenv
    Collecting virtualenv
    Downloading virtualenv-12.0.7-py2.py3-none-any.whl (1.8MB)
    100% |################################| 1.8MB 330kB/s 

malikarumi@Tetouan2:~$ pip freeze
    (a lot of stuff, but not virtualenv)

malikarumi@Tetouan2:~$ virtualenv testvenv1
    The program 'virtualenv' is currently not installed. You can install it by typing:
    sudo apt-get install python-virtualenv

Qu'est-ce qui se passe ici? est python-virtualenv == pyvenv? N'est-ce pas encore cassé? Virtualenv original fonctionne-t-il toujours avec python? si venv (trop de variantes de noms !!!) fait partie de la bibliothèque standard, https://docs.python.org/3/library/venv.html , pourquoi me dit-on de l'installer?

Et quand j'ai essayé de l'installer, j'ai eu:

malikarumi@Tetouan2:~$ sudo apt-get install python-virtualenv
    Reading package lists... Done
    Building dependency tree       
    Reading state information... Done
    The following extra packages will be installed:
    python-colorama python-distlib python-html5lib python-pip python-setuptools

À ce stade, j'ai avorté, car l'installation de python3-pip juste avant cela m'avait donné

Setting up python3-setuptools (3.3-1ubuntu1) ...
Setting up python3-pip (1.5.4-1) ...

Et je ne savais pas si les paquets supplémentaires les remplaceraient ou passeraient à python 2.7.

J'ai lu que python 3 est censé être la valeur par défaut à l'avenir. Étant donné que les versions 2.7 et 3.4 sont présentes et ont des commandes distinctes, comment puis-je non seulement m'assurer que Python 3 est ma valeur par défaut, mais que tout ce que j'installe va là-bas et est utilisé par lui au lieu de 2.7?

BTW, j'ai essayé sudo apt-get python3-virtualenv et j'ai obtenu: E: Impossible de localiser le paquet python3-virtualenv

Malik A. Rumi
la source
1
J'aimerais encore savoir quelle est la différence - le cas échéant - entre tous ces packages d'environnement virtuel différents mais de même nom.
Malik A. Rumi
J'utilise 14.04, donc cette réponse m'a aidé.
FriendFX

Réponses:

4

La façon d'installer des packages Python 3.x dans un environnement virtuel Python consiste à créer l'environnement virtuel Python à l'aide du créateur d'environnement virtuel Python 3 ( python3-virtualenv ). python3-virtualenv se trouve dans les référentiels Ubuntu par défaut dans Ubuntu 14.10 et versions ultérieures.

Installer des packages Python 3.x dans un environnement virtuel Python en 16.04 et versions ultérieures

  1. Installer le créateur d'environnement virtuel Python 3

    sudo apt install virtualenv python3-virtualenv
  2. Créez un environnement virtuel Python pour python3. Vous pouvez uniquement installer des packages python3 dans cet environnement virtuel Python. Si vous souhaitez également installer des packages Python 2.x, vous devez créer un autre environnement virtuel Python.

    virtualenv -p python3 env  
    source ./env/bin/activate

    Le nouvel environnement virtuel Python pour python3 sera créé dans le envrépertoire qui se trouve dans le répertoire courant.

  3. Installez les packages Python.

    cd / path / to / env / # env est le répertoire de l'environnement virtuel python3
    bin source / activer
    pip3 install prénom-package-nom suivant-package-nom dernier-package-nom

Il s'agit d'un nouvel environnement virtuel python3 avec la dernière version de pip3, donc l'installation de packages Python fonctionnera très bien.


Installer des packages Python 3.x dans un environnement virtuel Python dans Ubuntu 14.04

sudo apt-get install virtualenvwrapper  
gedit .bashrc

Ajoutez la ligne suivante à la fin de .bashrc.

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

Enregistrez les modifications dans .bashrc et fermez gedit. Recherchez votre .bashrc pour que les modifications prennent effet.

cd 
source .bashrc

Créez un environnement virtuel Python pour python3. Vous pouvez uniquement installer des packages python3 dans cet environnement virtuel Python. Si vous souhaitez également installer des packages Python 2.x, vous devez créer un autre environnement virtuel Python.

mkvirtualenv py3 -p /usr/bin/python3

Le nouvel environnement virtuel Python pour python3 sera créé dans le ~/.virtualenvs/py3répertoire. .virtualenvsest un dossier caché.

Installez un package.

cd ~ / .virtualenvs / py3
bin source / activer
nom du package d' installation pip3
Karel
la source
4
Cela ne semble pas être correct. Vivid (15.04) a python3-virtualenvet des python3-venvpackages disponibles. Je suppose que python3-venvc'est le bon package, auquel cas je n'ai aucune idée de l'objectif python3-virtualenv.
tricoter
Incorrect. Vous pouvez utiliser virtualenv(exécutable) pour créer un environnement avec un interprète arbitraire, y compris PyPy, très bien par exemple virtualenv -p python3 newenv.
saaj
0

Eh bien, ça se complique. Ce qui suit est montré contre Ubuntu Xenial (qui est la version sous-jacente pour Linux Mint que j'utilise). Disons-le:

pyvenv

Il fait référence au script d' encapsulation du package stdlib Python 3.3+ . Mais il est obsolète depuis Python 3.6.

Il s'agit également d'un package PyPi , qui est un commutateur d'environnement virtuel.

venv

Il s'agit du paquet Python 3.3+ stdlib dont le but était d'améliorer et de remplacer le paquet PyPi virtualenv (voir PEP 405 ). Mais il semble que ce ne soit pas encore là (du moins pas aussi complet).

python-virtualenv et virtualenv

$ apt-cache show virtualenv | grep Depends
Depends: python3, python3-virtualenv

Comme vous pouvez le voir, il fonctionne sur Python 3. Le python-virtualenvpackage est destiné à être utilisé comme python2 -m virtualenv py2. Voyons comment virtualenvfonctionne Ubuntu Xenial ( docker run --rm -it ubuntu:xenial):

$ virtualenv
bash: virtualenv: command not found
$ apt-get update
...
$ apt-get install --yes --no-install-recommends virtualenv
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  ca-certificates dh-python libexpat1 libmpdec2 libpython3-stdlib
  libpython3.5-minimal libpython3.5-stdlib libsqlite3-0 libssl1.0.0
  mime-support openssl python-pip-whl python3 python3-minimal
  python3-pkg-resources python3-virtualenv python3.5 python3.5-minimal
Suggested packages:
  libdpkg-perl python3-doc python3-tk python3-venv python3-setuptools
  python3.5-venv python3.5-doc binutils binfmt-support
Recommended packages:
  file
The following NEW packages will be installed:
  ca-certificates dh-python libexpat1 libmpdec2 libpython3-stdlib
  libpython3.5-minimal libpython3.5-stdlib libsqlite3-0 libssl1.0.0
  mime-support openssl python-pip-whl python3 python3-minimal
  python3-pkg-resources python3-virtualenv python3.5 python3.5-minimal
  virtualenv
...
$ virtualenv test
The executable python2 (from --python=python2) does not exist
$ virtualenv -p python3 py3 
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /py3/bin/python3
Also creating executable in /py3/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ . py3/bin/activate
(py3) $ python --version
Python 3.5.2
(py3) $ deactivate
$ apt-get install --yes --no-install-recommends python    
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following additional packages will be installed:
  libffi6 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib
  python-minimal python2.7 python2.7-minimal
Suggested packages:
  python-doc python-tk python2.7-doc binutils binfmt-support
The following NEW packages will be installed:
  libffi6 libpython-stdlib libpython2.7-minimal libpython2.7-stdlib python
  python-minimal python2.7 python2.7-minimal
...
$ virtualenv py2 
Running virtualenv with interpreter /usr/bin/python2
New python executable in /py2/bin/python2
Also creating executable in /py2/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
$ . py2/bin/activate
(py2) $ python --version
Python 2.7.12

Comme vous pouvez le voir même si le virtualenvpackage utilise python3-virtualenv, sa valeur par défaut est de créer un environnement Python 2.

saaj
la source
J'ai également remarqué la même chose sur ma machine qui exécutait Ubuntu 14.04 à l'époque. - "Comme vous pouvez le voir même si le package virtualenv utilise python3-virtualenv, sa valeur par défaut est de créer un environnement Python 2."
karel