Vous vous êtes lancé dans le développement avec le langage Python et chaque développeur que vous croisez vous parle de nouveaux outils. Nous allons ici clarifier le rôle de quelques outils que nous utilisons au quotidien.
Parmi ces outils, on trouve pip, conda, poetry, venv, virtualenv, pipenv... Ils sont souvent rassemblés dans la famille des gestionnaires de packages / d'environnements mais ceci couvre énormément de cas d'usages différents.
Avant de se concentrer sur les outils, un petit rappel de ce dont on a besoin pour coder en Python :
- Une ou plusieurs versions de Python
- Des packages et leurs dépendances
- Une IDE bien adapté
- Parfois des codes / packages dans d'autres langages (par exemple Cuda pour le deep learning sur GPU)
- Des environnements virtuels pour gérer les packages associés à chaque projet
Pour répondre à toutes ces contraintes, il faut vous équiper d'un certain nombre d'outils et chacun ont leurs propres spécificités.
Quelques définitions
Un package : on l'appelle aussi bibliothèque, librairie... Il s'agit d'un ensemble de classes, de fonctions ou de modules qui travaillent ensemble pour fournir des fonctionnalités spécifiques qui ne sont pas disponibles dans le langage Python.
Une dépendance : ceci fait référence à un autre package ou ensemble de packages nécessaires pour qu'un package spécifique fonctionne correctement.
Un environnement virtuel : c'est un outil utilisé pour créer des espaces isolés pour les projets Python, où vous pouvez gérer séparément les dépendances et les versions des packages pour chaque projet.
Pip, le gestionnaire de package de python
La commande
pip install
est souvent la première que vous apprenez en python, elle permet d'installer un package en local en allant le chercher sur le pypi (https://pypi.org/).
pip ira chercher les dépendances du packages mais ne gérera pas les conflits de dépendances entre packages (par exemple des versions non adaptées aux différents packages installés).
Pip n'a pas de gestionnaire d'environnement.
Documentation du projet PIP : https://pip.pypa.io/en/stable/
venv, le gestionnaire d'environnement de python
venv est un gestionnaire d'environnement virtuel qui est installé nativement dans python. Il permet de gérer des environnements simples, il ne comprend pas de gestionnaire de package.
venv est spécialement adapté pour les environnements simples. Il ne permet pas de travailler avec différentes versions de python ou avec des packages dans d'autres langages.
Documentation de venv : https://docs.python.org/fr/3/library/venv.html
conda, un outil multilangage pour la gestion de package et d'environnement
conda combine un gestionnaire de package et un gestionnaire d'environnements. conda est une solution plébiscité par les développeurs python dans le domaine de la data science car il peut gérer des packages dans d'autres langages que python.
Les deux composantes de conda sont :
- un gestionnaire de package qui peut aller chercher des packages sur différents dépôts, notamment conda-forge, anaconda... et gérer les dépendances complexes entre packages.
- un gestionnaire d'environnements permettant de créer des environnements avec des versions de python différentes et des packages dans d'autres langages que python.
Attention, il ne faut pas confondre conda et Anaconda. Conda est un outil open source de gestion de packages et d'environnements et Anaconda est une distribution de python incluant de nombreux packages ainsi qu'un dépôt. La distribution Anaconda se base sur conda mais elle fixe un certain nombre de contraintes, notamment l'obligation de posséder une licence pour une utilisation professionnelle d'Anaconda et de son dépôt.
Documentation du projet conda : https://docs.conda.io/en/latest/
Vous croiserez parfois une alternative à conda qui est bien souvent utilisée, il s'agit de mamba.
Il s'agit d'une alternative à conda qui se veut plus rapide et fiable que conda. Il reste aujourd'hui minoritaire par rapport à conda.
Documentation du projet mamba : https://mamba.readthedocs.io/en/latest/
Quel outil utiliser pour quel projet ?
Vous débutez en Python, votre objectif principal est :
- Manipuler des données et créer des modèles :
- Utilisez conda et la conda-forge
- Automatiser des traitements dans des projets à partager :
- Utilisez pip et venv
Et pour pratiquer ?
Partager cet article