Python : Virtualenv

De Justine's wiki
Aller à la navigation Aller à la recherche

Résumé des commandes

  • virtualenv venv : créée un environnement virtuel venv dans le dossier courant
  • virtualenv -p /usr/bin/python3.8 venv : Mettre python3.8 dans l'environnement virtuel
  • venv/bin/activate : Passer dans l'environnement virtuel
  • deactivate : Quitter l'environnement virtuel

Qu'est-ce que virtualenv

https://docs.python-guide.org/dev/virtualenvs/

Il s'agit d'un outil servant à créer des environnement python isolés. Il créée un dossier contenant tous les exécutables nécessaires à l'utilisation des packages dont un projet Python pourrait avoir besoin.

Il s'installe avec pip.

python3 -m pip install virtualenv --user
#Pour tester l'install
virtualenv --version

Comment ça fonctionne

On commence par faire un dossier pour le projet et par s'y rendre, puis on amorce un environnement virtuel:

<source> [justine@Argonaut TestVirtualEnv]$ python3 -m virtualenv venv created virtual environment CPython3.8.1.final.0-64 in 117ms

 creator CPython3Posix(dest=/home/justine/Sandbox/Python/TestVirtualEnv/venv, clear=False, global=False)
 seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/home/justine/.local/share/virtualenv/seed-v1)
 activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

</source>

Il créée alors un dossier venv qui contient les exécutables python, et une copie de pip que nous pourront utiliser pour installer des packages. J'ai ici nommé l'environnement virtual venv, mais on peut lui donner ce que l'on veut; cependant venv est une convention.

On peut choisir l'exécutable Python:

<source> [justine@Argonaut TestVirtualEnv]$ python3 -m virtualenv -p /usr/bin/python3.8 venv created virtual environment CPython3.8.1.final.0-64 in 170ms

 creator CPython3Posix(dest=/home/justine/Sandbox/Python/TestVirtualEnv/venv, clear=False, global=False)
 seeder FromAppData(download=False, pip=latest, setuptools=latest, wheel=latest, via=copy, app_data_dir=/home/justine/.local/share/virtualenv/seed-v1)
 activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator

</source>

Je me retrouve avec une copie de python 3.8. Je peux ensuite l'activer:

<source> [justine@Argonaut TestVirtualEnv]$ source venv/bin/activate (venv) [justine@Argonaut TestVirtualEnv]$ </source>

Mon prompt change, et à partir de là les modules que j'installe avec pip vont dans l'environnement virtuel:

<source> (venv) [justine@Argonaut TestVirtualEnv]$ pip install requests Collecting requests

 Downloading requests-2.23.0-py2.py3-none-any.whl (58 kB)
    |████████████████████████████████| 58 kB 864 kB/s 

Collecting chardet<4,>=3.0.2

 Downloading chardet-3.0.4-py2.py3-none-any.whl (133 kB)
    |████████████████████████████████| 133 kB 1.7 MB/s 

Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1

 Downloading urllib3-1.25.8-py2.py3-none-any.whl (125 kB)
    |████████████████████████████████| 125 kB 1.7 MB/s 

Collecting idna<3,>=2.5

 Downloading idna-2.9-py2.py3-none-any.whl (58 kB)
    |████████████████████████████████| 58 kB 1.6 MB/s 

Collecting certifi>=2017.4.17

 Using cached certifi-2019.11.28-py2.py3-none-any.whl (156 kB)

Installing collected packages: chardet, urllib3, idna, certifi, requests Successfully installed certifi-2019.11.28 chardet-3.0.4 idna-2.9 requests-2.23.0 urllib3-1.25.8 venv) [justine@Argonaut TestVirtualEnv]$ ls venv/lib/python3.8/site-packages/ certifi chardet-3.0.4.dist-info idna-2.9.dist-info pip-20.0.2.virtualenv requests-2.23.0.dist-info setuptools-45.2.0.virtualenv wheel certifi-2019.11.28.dist-info easy_install.py pip pkg_resources setuptools urllib3 wheel-0.34.2.dist-info chardet idna pip-20.0.2.dist-info requests setuptools-45.2.0.dist-info urllib3-1.25.8.dist-info wheel-0.34.2.virtualenv </source>

Pour quitter l'environnement virtuel, la commande est:

<source> (venv) [justine@Argonaut TestVirtualEnv]$ deactivate [justine@Argonaut TestVirtualEnv]$ </source>