Python : Virtualenv
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>