« Python : Pipenv » : différence entre les versions
(Page créée avec « = Qu'est-ce que c'est = Pipenv est une alternative à pip, un peu plus user-friendly et haut niveau. Il s'installe avec pip et s'utilise comme pip: <source> [justine@Argo... ») |
Aucun résumé des modifications |
||
(2 versions intermédiaires par la même utilisatrice non affichées) | |||
Ligne 1 : | Ligne 1 : | ||
[[Category:prog]] | |||
[[Category:python]] | |||
= Qu'est-ce que c'est = | = Qu'est-ce que c'est = | ||
Pipenv est une alternative à pip, un peu plus user-friendly et haut niveau. Il s'installe avec pip et s'utilise comme pip: | 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> | <source lang="bash"> | ||
[justine@Argonaut ~]$ python3 -m pip install virtualenv --user | [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: virtualenv in ./.local/lib/python3.8/site-packages (20.0.5) | ||
Ligne 9 : | Ligne 11 : | ||
Requirement already satisfied: distlib<1,>=0.3.0 in /usr/lib/python3.8/site-packages (from virtualenv) (0.3.0) | 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) | Requirement already satisfied: six<2,>=1.9.0 in /usr/lib/python3.8/site-packages (from virtualenv) (1.14.0) | ||
[justine@Argonaut | </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… | Creating a virtualenv for this project… | ||
Pipfile: /home/justine/Pipfile | Pipfile: /home/justine/Sandbox/Python/TestPipEnv/Pipfile | ||
Using /usr/bin/python3 (3.8.1) to create virtualenv… | 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/ | 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) | 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 | activators BashActivator,CShellActivator,FishActivator,PowerShellActivator,PythonActivator,XonshActivator | ||
✔ Successfully created virtual environment! | ✔ Successfully created virtual environment! | ||
Virtualenv location: /home/justine/.local/share/virtualenvs/ | Virtualenv location: /home/justine/.local/share/virtualenvs/TestPipEnv--J2GlgPZ | ||
Creating a Pipfile for this project… | Creating a Pipfile for this project… | ||
Installing | Installing requests… | ||
Adding | Adding requests to Pipfile's [packages]… | ||
✔ Installation Succeeded | ✔ Installation Succeeded | ||
Installing -- | 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. |
Dernière version du 22 juin 2022 à 12:07
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.