Installation Python 🐍
Python est largement utilisé en data science grâce à sa simplicité, sa polyvalence et son riche écosystème de bibliothèques. Il est devenu essentiel pour analyser des données, créer des visualisations et automatiser des tâches. Si une installation basique d'Anaconda ou de Python suffit pour débuter, en milieu professionnel, la gestion de projets multiples avec des versions et dépendances différentes devient rapidement complexe.
Cette section vous guidera pour gérer vos environnements Python de manière efficace. Vous découvrirez comment aller au-delà des limites d'une installation classique et adopter des pratiques garantissant des projets stables, reproductibles et facilement partageables en équipe.
Les limites d'une installation classique
Bien que Windows, macOS et Ubuntu incluent souvent une version préinstallée de Python, ces versions système présentent plusieurs inconvénients. Tout d'abord, elles sont parfois obsolètes : par exemple, votre Mac pourrait encore utiliser Python 2.7 alors qu'une autre version plus récente est disponible. Ensuite, la coexistence de Python 2 et Python 3 entraîne une confusion fréquente : faut-il utiliserpython ou python3 dans le terminal ? Quel pip correspond à
quelle version ? Ces ambiguïtés peuvent provoquer des erreurs frustrantes, notamment lorsque des
packages sont installés au mauvais endroit ou que des scripts sont exécutés avec une version
incorrecte de Python.
En équipe, les problèmes s'aggravent. Vous pourriez avoir à gérer simultanément :
- Un projet A utilisant Python 3.8
- Un projet B basé sur Python 3.11
- Un prototype fonctionnant avec Python 3.12
Avec une installation classique, il est impossible de répondre à cette flexibilité.
Les principaux problèmes rencontrés
En milieu professionnel, l'utilisation de Python peut entraîner des défis techniques majeurs liés à la gestion des dépendances et des versions. Voici quelques-uns des problèmes les plus fréquents :
- Partage de code : Vos notebooks peuvent être inutilisables chez vos collègues si leurs versions de packages diffèrent. Par exemple, votre Pandas 2.0 peut être incompatible avec leur Pandas 1.5.
- Conflits de dépendances : Certains packages nécessitent des versions spécifiques incompatibles entre elles. Par exemple, un package peut exiger NumPy 1.24, tandis qu'un autre refuse toute version supérieure à 1.23. C'est ce qu'on appelle l'enfer des dépendances (dependency hell).
- Mises à jour risquées : Une nouvelle version majeure de Python ou d'un package peut améliorer les performances, mais casser votre code existant. Vous devez alors choisir entre rester sur une ancienne version ou prendre le risque de tout casser.
Pour surmonter ces défis, la communauté Python a développé des outils modernes. Ces outils permettent
d'installer plusieurs versions de Python en parallèle et de créer des environnements isolés pour
chaque projet. Dans cette section, nous utiliserons uv, un outil qui simplifie la gestion
des versions et des dépendances de manière efficace.
📚 Pourquoi choisir uv ?
uv combine plusieurs fonctionnalités importantes pour les développeurs Python :
- Gestion des versions Python : uv permet d'installer et de gérer plusieurs versions de Python,
comme
pyenv. - Création d'environnements virtuels isolés : uv facilite la gestion des
environnements spécifiques à chaque projet, comme
virtualenvouvenv. - Résolution intelligente des dépendances : uv gère efficacement les
dépendances et sous-dépendances, à l'image de
Poetry. - Installation rapide des packages :Écrit en Rust, uv est jusqu'à 100 fois
plus rapide que
pip.
Installation uv
Installer des packages directement avec pip (installation dite "directe") pose souvent
problème : pip installe le package demandé sans vérifier la compatibilité de ses
dépendances avec
celles déjà présentes dans votre environnement. Cela peut entraîner des conflits ou casser d'autres
projets. C'est précisément ce que l'on cherche à éviter.
Aujourd'hui, la communauté Python recommande des outils modernes pour simplifier l'installation et la
gestion de Python. uv, développé en Rust, regroupe la gestion des versions, des
environnements virtuels et des packages dans une seule solution simple et rapide.
Avec uv, chaque projet dispose d'un environnement virtuel isolé, incluant sa propre
version de Python et ses dépendances. Cela évite les conflits entre projets et garantit une
compatibilité parfaite. Vous pouvez ainsi gérer plusieurs versions de Python et de packages sans
affecter le reste de votre système.
En plus de sa simplicité, uv automatise la gestion des environnements et des dépendances.
Il permet également de partager facilement un projet grâce à ses fichiers de configuration, comme
pyproject.toml et uv.lock, assurant une reproduction fidèle de
l'environnement, quel que soit le système d'exploitation utilisé (Windows, macOS, Linux).
Avantages de uv :
- Installation automatique : uv télécharge et installe les versions manquantes
- Pas de compilation : uv utilise des binaires pré‑compilés
- Gestion intégrée : versions Python, venv et packages
L'installation de uv est simple et rapide, quel que soit votre système d'exploitation.
Voici les commandes à utiliser selon votre plateforme :
macOS
brew install uv
Linux / WSL2
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
Vérification : uv --version
Installer une version Python avec uv
Une fois uv installé, vous pouvez facilement gérer différentes versions de Python avec
ces commandes :
# Versions installées
uv python list --only-installed
# Toutes les versions disponibles
uv python list
# Installer une version spécifique
uv python install 3.11
# Installer plusieurs versions
uv python install 3.10 3.11 3.12
Configuration des versions Python avec uv
Pour garantir l'isolation et la reproductibilité de chaque projet, uv permet de
configurer précisément la version de Python utilisée dans votre environnement. Voici quelques
commandes utiles :
# Dans votre répertoire de projet
uv python pin 3.11
# Vérifier la version active
uv run python --version
# Afficher le chemin Python utilisé
uv run which python
Configuration de votre environnement virtuel
uv permet de créer facilement des environnements virtuels pour chaque projet, sans avoir
besoin d'utiliser venv ou virtualenv. Voici comment procéder :
# Créer un venv avec une version précise
uv venv --python 3.11
Vous verrez un message du type : "Using Python 3.11.5 interpreter".
pyproject.toml : le standard pour les projets Python
Le fichier pyproject.toml sert de point central pour configurer un projet Python. Il
décrit toutes les informations importantes : le nom du projet, sa version, ses dépendances, et la
configuration des outils utilisés (comme les gestionnaires de paquets ou les outils de build).
Concrètement, pyproject.toml permet à n'importe quel outil compatible (par exemple
uv, Poetry ou pip) de comprendre comment installer et
configurer votre projet, sans avoir à jongler avec plusieurs fichiers différents. Cela facilite
l'installation, la reproduction de l'environnement, la collaboration en équipe et la maintenance du
projet sur le long terme.
Pour le moment, l’environnement n’est pas encore créé, il a simplement été déclaré dans le fichier
pyproject.toml !
Pour créer l’environnement virtuel avec les packages déclarés, utilisez la commande suivante dans le
terminal :
uv pip install
Un fichier uv.lock va apparaître dans votre dossier. Il contient les versions EXACTES de
toutes les dépendances et sous-dépendances nécessaires pour reproduire votre environnement à
l’identique, sans conflits de versions. Si un collègue vous partage son pyproject.toml
(et éventuellement son uv.lock), il vous suffit de lancer uv pip install
pour recréer l’environnement à l’identique.
L’environnement est prêt, mais pour l’utiliser dans votre terminal, vous pouvez exécuter vos commandes
Python avec :
uv run python
ou ouvrir un shell dans l’environnement avec :
uv venv shell
Maintenant, vous êtes dans l’environnement virtuel isolé. Vous pouvez lancer votre Jupyter Notebook
depuis le terminal avec la commande :
uv run jupyter lab
Quand vous avez terminé de travailler sur votre projet, quittez simplement le shell de l’environnement
virtuel avec :
exit
Avec uv, vous pouvez aussi :
- Désinstaller une dépendance :
uv pip uninstall nom_du_package - Voir la liste des environnements virtuels créés :
uv venv list - Afficher toutes les sous-dépendances d’un package :
uv pip show nom_du_package --tree - Découvrir toutes les commandes disponibles :
uv --help
Comment uv utilise pyproject.toml ?
uv s'appuie sur le fichier pyproject.toml pour gérer les dépendances et la
configuration des projets Python :
- Les dépendances sont déclarées dans la section
[project.dependencies]. - La configuration spécifique à
uvest stockée dans la section[tool.uv]. - Le fichier reste lisible par d'autres outils respectant la PEP 621.
Les avantages de l'approche uv
L'un des points forts de uv est sa capacité à générer un fichier uv.lock. Ce
fichier verrouille les versions exactes des dépendances, garantissant une
reproductibilité de l'environnement. De plus, uv peut lire les fichiers
pyproject.toml créés par d'autres outils, ce qui facilite la migration depuis des
gestionnaires comme Poetry ou pip.