Comment créer un environnement virtuel sur Ubuntu avec Pipenv



Mis à jour le Sept. 12, 2022, 6:46 p.m.

 

 

Il existe actuellement de nombreux outils populaires pour implémenter des environnements virtuels. De virtualenv à venv en passant par Pipenv, mais fondamentalement, ils font tous la même chose.

 

Pour ceux qui se demandent la différence entre un environnement virtuel python et docker, la distinction importante entre les environnements virtuels et Docker est que les environnements virtuels ne peuvent isoler que des paquets Python. Ils ne peuvent pas isoler des logiciels n'appartenant pas à python, comme une base de données PostgreSQL ou MySQL. Et ils reposent toujours sur une installation globale Python au niveau du système (en d'autres termes, sur votre machine). L'environnement virtuel pointe vers une installation Python existante ; il ne contient pas Python lui-même, alors que les conteneurs Docker isolent l'ensemble du système d'exploitation, pas seulement les parties Python.

 

Ok super, mais nous on est là pour installer de l'environnement virtuel, avec pipenv.

 

Pourquoi Pipenv?

Pour comprendre les problèmes que Pipenv résout, il est utile de montrer comment la gestion des paquets Python a évolué au fil des ans. A ces débuts, Python n'avait pas de moyen propre d'installation de paquets. Easy Install est apparu, un paquet qui installe d'autres paquets Python avec une relative facilité qui a néanmoins un effet indésirable non-négligeable: difficile de désinstaller les paquets qui ne sont plus nécessaires.

C'est alors qu'est apparu pip, que la plupart des utilisateurs de Python connaissent bien (et vous aussi sûrement). Pip nous permet d'installer et de désinstaller des paquets. Nous pouvons spécifier des versions, exécuter pip freeze > requirements.txt pour afficher une liste des paquets installés dans un fichier texte, et utiliser ce même fichier texte pour installer tout ce dont une application a besoin avec pip install -r requirements.txt.

Mais pip n'a pas inclus un moyen d'isoler les paquets les uns des autres. Nous pouvons être amenés à travailler sur des applications qui utilisent différentes versions des mêmes bibliothèques, il nous fallait donc trouver un moyen de le faire. C'est ainsi que sont apparus les environnements virtuels, qui nous permettent de créer de petits environnements isolés pour chaque application sur laquelle nous travaillons. Nous avons vu de nombreux outils pour gérer les environnements virtuels : virtualenv, venv, virtualenvwrapper, pyenv, pyenv-virtualenv, pyenv-virtualenvwrapper, et quelques autres. Ils fonctionnent tous avec pip et les fichiers requirements.txt.

 

Pipenv nous permet de résoudre plusieurs problème simultanément:

    - le besoin de plusieurs bibliothèque: le problème de la nécessité de disposer de la bibliothèque pip pour l'installation des paquets + une bibliothèque pour créer un environnement virtuel+ une bibliothèque pour gérer les environnements virtuels + toutes les commandes associées à ces bibliothèques. Cela fait beaucoup à gérer. Pipenv est livré avec le support de la gestion des paquets et des environnements virtuels. Vous pouvez donc utiliser un seul outil pour installer, désinstaller, suivre et documenter vos dépendances et pour créer, utiliser et organiser vos environnements virtuels. Lorsque vous démarrez un projet avec Pipenv, ce dernier crée automatiquement un environnement virtuel pour ce projet si vous n'en utilisez pas déjà un.

Pipenv accomplit cette gestion des dépendances en abandonnant la norme requirements.txt et en la troquant pour un nouveau document appelé Pipfile. Lorsque vous installez une bibliothèque avec Pipenv, un Pipfile pour votre projet est automatiquement mis à jour avec les détails de cette installation, y compris les informations sur la version et éventuellement l'emplacement du dépôt Git, le chemin du fichier et d'autres informations.

Deuxièmement, Pipenv veut faciliter la gestion des interdépendances complexes. Votre application peut dépendre d'une version spécifique d'une bibliothèque, et cette bibliothèque peut dépendre d'une version spécifique d'une autre bibliothèque. Lorsque deux bibliothèques que votre application utilise ont des dépendances conflictuelles, la vie de votre ordinateur peut vite se raccourcir ;).

Pipenv veut soulager cette douleur en gardant la trace d'un arbre des interdépendances de votre application dans un fichier appelé Pipfile.lock. Pipfile.lock vérifie également que les bonnes versions des dépendances sont utilisées en production.

 

Pipenv est également très pratique lorsque plusieurs développeurs travaillent sur un projet. Comme Pipenv documente automatiquement les dépendances au fur et à mesure que vous les installez, si deux developpeurs utilisent Pipenv, le Pipfile est automatiquement mis à jour et inclus dans le commit. Cela permet aux developpeurs de garder des relations saines ;).


Enfin, l'utilisation de Pipenv signale aux autres personnes qui travaillent sur votre projet qu'il est livré avec une méthode standardisée pour installer les dépendances du projet et les exigences de développement et de test. L'utilisation d'un workflow avec Pip et des fichiers d'exigences signifie que vous pouvez avoir un seul fichier requirements.txt, ou plusieurs fichiers d'exigences pour différents environnements. Vos collègues peuvent ne pas savoir s'ils doivent exécuter dev.txt ou local.txt lorsqu'ils exécutent le projet sur leur ordinateur, par exemple. Cela peut également créer de la confusion lorsque deux fichiers d'exigences similaires sont complètement désynchronisés l'un par rapport à l'autre : le fichier local.txt est-il obsolète ou est-il vraiment censé être si différent du fichier dev.txt ?

Vous l'aurez compris, Pipenv c'est le top!  (oui je mets cette phrase en gras comme résumé  pour ceux qui ont eu la flemme de lire le pavé ci-dessus)

 

Comment installer Pipenv?

pip install pipenv

 

 

pip install numpy

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    Construire sa propre machine de Deep Learning

    Installer jupyter notebook

    Comment créer un environnement virtuel sur Ubuntu avec Pipenv

    Comment créer un environnement virtuel sur W10?

    Comment installer SublimeText sur Ubuntu?

    Comment installer Pytorch sur Ubuntu?

    Comment installer OpenCV sur Windows10?

    Comment installer OpenCV sur Ubuntu?