DY

DelahayeYourself

modules / LP Web Dynamique /

TP03: Pip, virtualenv et pipenv

Pip

pip est un gestionnaire de paquets utilisé pour installer et gérer des paquets écrits en Python. De nombreux paquets peuvent être trouvés sur le dépôt Python Package Index (PyPI).

pip est un acronyme récursif qui correspond à la fois à « Pip Installs Packages » ou à « Pip Installs Python »

CLI

Un des avantages majeurs de pip est la facilité de son interface en ligne de commande, qui rend l'installation de paquets applicatifs Python aussi simple que de taper une commande :

pip install <nom-du-paquet>

Virtualenv

virtualenv est un outil pour créer des environnements Python virtuels isolés.

Le problème de base à résoudre est celui des dépendances, des versions, et indirectement des autorisations.

Imaginez que vous ayez une application nécessitant la version 1 de LibFoo, mais qu'une autre application nécessite la version 2. Comment utiliser ces deux applications? Si vous installez tout dans /usr/lib/python2.7/site-packages (ou quel que soit l'emplacement standard de votre plate-forme), il est facile de vous retrouver dans une situation où vous mettez à jour involontairement une application qui ne devrait pas l'être.

Le problème de base à résoudre est celui des dépendances et des versions, et indirectement des autorisations. Imaginez que vous ayez une application nécessitant la version 1 de LibFoo, mais qu'une autre application nécessite la version 2. Comment utiliser ces deux applications? Si vous installez tout dans /usr/lib/python2.7/site-packages (ou quel que soit l'emplacement standard de votre plate-forme), il est facile de vous retrouver dans une situation où vous mettez à jour involontairement une application qui ne devrait pas l'être.

Ou plus généralement, si vous voulez installer une application et la laisser? Si une application fonctionne, toute modification de ses bibliothèques ou de leurs versions peut perturber l'application.

De plus, que se passe-t-il si vous ne pouvez pas installer de packages dans le répertoire global site-packages? Par exemple, sur un hôte partagé ou encore les machines de l'iut.

Dans tous ces cas, virtualenv peut vous aider. Il crée un environnement qui possède ses propres répertoires d’installation, qui ne partage pas de bibliothèques avec d’autres environnements virtualenv (et n’a pas non plus accès aux bibliothèques installées globalement).

Pipenv, solution moderne pour remplacer pip et virtualenv

pipenv reprend les idées de pip, virtualenv, pew et même quelques trucs de npm, yarn, cargo, et essaye d’appliquer tout ça à Python.

pipenv permet donc d’installer des packages Python, d’isoler cette installation et de la rendre reproductible. Mais sans effort.

En effet, contrairement à la concurrence:

Installer pipenv

Bien que l’outil soit maintenant recommandé par la doc officielle. Il va falloir l’installer. Or pipenv se base sur une version récente de pip, donc il faut d’abord être sûr d’avoir pip installé et à jour.

Pour installer pipenv un simple:

pip install pipenv

Sur les machines de l'iut c'est déjà fait pour vous !

Utilisation

Dans le dossier de votre projet:

pipenv --python 3

Nous allons créer un environement virtuel basé sur python3. Les fichiers de configs sont gérés automatiquement, il n’y a rien à faire.

Si vous voulez lancer une commande dans le virtualenv:

pipenv run python

Ceci lancera le python de notre virtualenv

Si vous voulez que toutes les commandes soient dans le virtualenv:

pipenv shell

Découverte de requests

Nous allons tenter de développer une (mini/nano) première application (un peu) utile en python.

Notre programme appellera une API qui va récupérer le résultat de la requête en JSON (JavaScript Object Notation) pour l’afficher dans notre console.

Les API sur Internet

Les API sont un moyen d’accéder aux données d’un site sans avoir l’autorisation d’accéder directement à la base de données. Il y a beaucoup de portails sécurisés permettant à vos applications web de manipuler les données renvoyées par ces sites.

L’exemple parfait est Twitter. Elle permet de lire la timeline d’une personne en particulier, de rechercher des statuts à partir d’un mot clé, de modifier les paramètres de votre compte, etc.

Pourquoi choisir JSON ?

Vous pouvez utiliser les API avec de nombreux langages et retourner les données de plusieurs façons. L’une d’elles est le JSON (JavaScript Object Notation). C’est un format de données léger, facile à lire et à écrire et compatible avec pas mal de langages de développement.

Sa structure est composée d’objets et de tableaux. Sa flexibilité fait de JSON le parfait candidat pour retourner des données.

Utilisation de requests

D'abord il convient d'installer requests:

pipenv install requests

Puis dans un fichier .py nous pouvons appeller l'api suivante https://allosaurus.delahayeyourself.info/api/books:

import requests # Import du module requests

response = requests.get('https://allosaurus.delahayeyourself.info/api/books')

response.status_code # 200

response.text # Corps de la réponse en texte brut

response.json() # Corps de la réponse transcripté en objets

Conclusion

Vous venez de découvrir le gestionnaire de dépendances python, les environements virtuels python qui sera bien utile pour la suite de nos aventures !

Vous avez également découvert les API REST et le format de données JSON ! Félicitations !