web-dev-qa-db-fra.com

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

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 demande-t-on d'installer il?

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

A ce moment-là, j'ai abandonné, car installer 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 écraseraient ou iraient sur python 2.7.

J'ai lu que python 3 est supposé être la valeur par défaut pour l'avenir. Comme 2.7 et 3.4 existent et ont des commandes séparées, comment puis-je non seulement m'assurer que Python 3 est ma valeur par défaut, mais que tout ce que j'installe y est utilisé et qu'il est utilisé au lieu de 2.7?

En passant, j'ai essayé Sudo apt-get python3-virtualenv et j'ai: E: Impossible de localiser le paquet python3-virtualenv

12
Malik A. Rumi

Pour installer les packages Python 3.x dans un environnement virtuel Python, vous devez créer l'environnement virtuel Python à l'aide de l'environnement virtuel Python 3. créateur (python3-virtualenv). python3-virtualenv se trouve dans les référentiels Ubuntu par défaut dans Ubuntu 14.10 et versions ultérieures.

Installez les packages Python 3.x dans un environnement virtuel Python à partir de 16.04

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

    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 les 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 répertoire env qui se trouve dans le répertoire actuel.

  3. Installez les packages Python.

    cd/path/to/env/# env est le répertoire 
     de l'environnement virtuel python3. bin source/activate 
     pip3 install nom-premier-paquet nom-prochain-paquet dernier-nom-paquet

Il s'agit d'un nouvel environnement virtuel python3 doté de la dernière version de pip3. L'installation des packages Python fonctionnera donc parfaitement.


Installez les packages Python 3.x dans un environnement virtuel Python sous 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. Source 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 les 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 répertoire ~/.virtualenvs/py3. .virtualenvs est un dossier caché.

Installez un paquet.

cd ~/.virtualenvs/py3 
 corbeille source/activer 
 pip3 installer nom du paquet
4
karel

Eh bien, ça se complique. Ce qui suit est illustré par rapport à Ubuntu Xenial (qui est la version sous-jacente pour Linux Mint que j'utilise). Réglons-le:

pyvenv

Il fait référence au script wrapper de Python 3.3+ paquet stdlib . Mais il est obsolète depuis Python 3.6.

C'est aussi un paquet PyPi , qui est un commutateur d'environnement virtuel.

venv

C'est le Python 3.3+ paquet stdlib dont le but était d'améliorer et de remplacer le PyPi paquet virtualenv (voir PEP 405 ) . Mais il semble que ce n’est 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 paquetage python-virtualenv est conçu pour être utilisé comme python2 -m virtualenv py2. Voyons comment virtualenv fonctionne sur une nouvelle version de 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 constater même si le paquet virtualenv utilise python3-virtualenv, sa valeur par défaut est de créer un environnement Python 2.

0
saaj