Python : Pipenv
Qu'est-ce que c'est
Pipenv est une alternative à pip, un peu plus user-friendly et haut niveau. Les modules sont gérées au niveau projet (et non au niveau système !). Il s'installe avec pip et s'utilise comme pip:
<source lang="bash"> [justine@Argonaut ~]$ python3 -m pip install virtualenv --user Requirement already satisfied: virtualenv in ./.local/lib/python3.8/site-packages (20.0.5) Requirement already satisfied: filelock<4,>=3.0.0 in ./.local/lib/python3.8/site-packages (from virtualenv) (3.0.12) Requirement already satisfied: appdirs<2,>=1.4.3 in /usr/lib/python3.8/site-packages (from virtualenv) (1.4.3) Requirement already satisfied: distlib<1,>=0.3.0 in /usr/lib/python3.8/site-packages (from virtualenv) (0.3.0) Requirement already satisfied: six<2,>=1.9.0 in /usr/lib/python3.8/site-packages (from virtualenv) (1.14.0) </Source>
On va créer un dossier pour un projet qui a besoin de divers modules:
<source> [justine@Argonaut Python]$ mkdir TestPipEnv [justine@Argonaut Python]$ cd TestPipEnv/ [justine@Argonaut TestPipEnv]$ python3 -m pipenv install requests Creating a virtualenv for this project… Pipfile: /home/justine/Sandbox/Python/TestPipEnv/Pipfile Using /usr/bin/python3 (3.8.1) to create virtualenv… ⠹ Creating virtual environment...created virtual environment CPython3.8.1.final.0-64 in 117ms
creator CPython3Posix(dest=/home/justine/.local/share/virtualenvs/TestPipEnv--J2GlgPZ, 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
✔ Successfully created virtual environment! Virtualenv location: /home/justine/.local/share/virtualenvs/TestPipEnv--J2GlgPZ Creating a Pipfile for this project… Installing requests… Adding requests to Pipfile's [packages]… ✔ Installation Succeeded Pipfile.lock not found, creating… Locking [dev-packages] dependencies… Locking [packages] dependencies… ✔ Success! Updated Pipfile.lock (fbd99e)! Installing dependencies from Pipfile.lock (fbd99e)…
🐍 ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ 5/5 — 00:00:01
To activate this project's virtualenv, run pipenv shell. Alternatively, run a command inside the virtualenv with pipenv run. [justine@Argonaut TestPipEnv]$ ls Pipfile Pipfile.lock </source>
On voit que Pipenv installe la dépendance au niveau système, mais il créée aussi un pipfile qui sert à noter toutes les dépendances du projet. On peut ensuite faire un script avec ce module requests que l'on vient d'installer :
<syntaxhighlight lang='python'>
- !/usr/bin/env python3
- coding: utf-8
import requests
- !---------- test.py ----------
- Description
- ------------------------------!
- ----------! FUNC
- ----------! MAIN
response = requests.get('https://httpbin.org/ip')
print('Your IP is {0}'.format(response.json()['origin'])) </syntaxhighlight>
Et le faire tourner avec pipenv pour s'assurer que toutes les dépendances sont bien présentes:
<source> [justine@Argonaut TestPipEnv]$ pipenv run python3 test.py Your IP is 82.244.229.32 </source>
On peut aussi ouvrir un shell avec pipenv shell.