2.1 Conda - Théorie et contexte
← Retour à la formation | Section suivante: Installation →
Le problème que Conda résout
Vous avez probablement rencontré cette situation frustante : vous installez pip install gdal pour un projet de géomatique, et vous recevez une erreur du type :
ERROR: Could not find a version that satisfies the requirement GDAL
ERROR: Could not build wheels for GDAL
Ou pire, l'installation réussit, mais GDAL ne trouve pas la bibliothèque PROJ au moment de l'exécution. Pourquoi ? Parce que GDAL n'est pas qu'une librairie Python. C'est une collection de outils géospatiaux écrits en C/C++ (GDAL, GEOS, PROJ, TIFF, etc.) qui ont besoin d'être compilées correctement et de fonctionner ensemble.
Python seul (avec pip) ne peut pas gérer ces dépendances C. C'est le rôle de Conda.
Note technique : pip peut installer facilement certaines bibliothèques (PyTorch, seaborn) car elles fournissent des wheels (.whl) — des librairies Python pré-compilées sur PyPI. GDAL et Rasterio ne fournissent PAS de wheels pour Windows, forçant pip à compiler depuis le code source, ce qui échoue fréquemment.
Qu'est-ce que Conda ?
Conda est un gestionnaire de paquets et d'environnements qui : - Télécharge des versions pré-compilées de GDAL, PROJ, et autres (au lieu de compiler localement) - Garantit que toutes les dépendances C sont compatibles entre elles - Permet de créer des environnements isolés pour chaque projet
Anaconda vs Miniforge : Quel choisir ?
Avant de choisir votre gestionnaire, il faut comprendre qu'Anaconda et Miniforge sont deux distributions de Conda (il en existe d'autres : Miniconda, Mambaforge, etc.).
Anaconda est la distribution "complète" : elle installe ~250 librairies pré-compilées (NumPy, Pandas, Matplotlib, etc.) d'emblée. C'est comme recevoir un couteau suisse avec 40 outils alors que vous n'en utiliserez que 3.
Miniforge est la distribution "minimale" : elle installe seulement Conda et laisse vous installer ce dont vous avez besoin. Plus léger, plus rapide, et plus flexible.
| Aspect | Anaconda | Miniforge |
|---|---|---|
| Taille installation | ~3 GB | ~150 MB |
| Librairies pré-installées | ~250 (NumPy, Pandas, etc.) | Aucune |
| Temps installation | ~10-15 minutes | ~2-3 minutes |
| License | Commerciale (payante pour pro) | Open Source (100% libre) |
| Canal par défaut | defaults (Anaconda Inc.) |
conda-forge (communautaire) |
| Idéal pour | Débutants absolus | Projets professionnels/géomatique |
★ Ma recommandation pour ce cours : Miniforge avec le canal conda-forge
Pourquoi ? Parce que pour la géomatique et l'analyse de données spatiales, vous avez besoin de versions récentes et stables de GDAL, PROJ, et GeoPandas. Miniforge + conda-forge garantit des mises à jour régulières et une meilleure compatibilité avec l'écosystème géospatial.
Le rôle crucial de conda-forge
Conda utilise des canaux (channels) pour télécharger les librairies. Pensez à un canal comme une source/dépôt de librairies.
Canal defaults (fourni par Anaconda Inc.)
- Librairies maintenues par l'équipe Anaconda
- Mise à jour lente (focus sécurité)
- Problème : GDAL et géospatial souvent obsolètes
Canal conda-forge (maintenu par la communauté)
- ~20,000 librairies maintenues par des scientifiques et développeurs
- Mise à jour rapide (nouvelles versions de GDAL disponibles rapidement)
- Idéal pour géomatique et science des données
- 100% gratuit et transparent (toutes les versions disponible sur GitHub)
☞ Pour explorer : Consultez le dépôt conda-forge sur GitHub pour voir les milliers de librairies disponibles.
Exemple concret :
# Avec Miniforge (conda-forge est déjà le canal par défaut) :
conda install gdal # [OK] Fonctionne (utilise conda-forge)
conda install -c conda-forge gdal # [OK] Fonctionne aussi (explicite)
# Avec Anaconda (canal defaults par défaut) :
conda install gdal # [!] Version obsolète du canal defaults
conda install -c conda-forge gdal # [OK] Version à jour de conda-forge
Alternatives à Conda : Quand les utiliser ?
Vous avez d'autres outils pour gérer les librairies Python. Voici comment les utiliser :
| Outil | Utilité | Quand l'utiliser | Limitation |
|---|---|---|---|
| Conda | Gestion complète (Python + dépendances C) | Toujours pour géomatique | - |
| Pip | Installer librairies Python uniquement | Librairies simples (seaborn, pandas) | Ne compile pas dépendances C |
| Mamba | Remplaçant ultra-rapide de Conda | Conda trop lent ? Installez mamba | Encore jeune (moins stable) |
| uv | Alternative moderne à pip | Projets Python pur (sans dépendances C) | Récent, communauté petite |
| VENV | Environnements Python seulement | Jamais pour géomatique | Pas de dépendances C |
Bon à savoir : Miniforge fournit déjà mamba aux côtés de conda, vous pouvez donc immédiatement profiter de son solveur plus rapide.
Notre choix pour ce cours : Conda (et mamba quand vous voulez accélérer les installations).
Pourquoi isoler les environnements ?
Vous avez plusieurs projets de recherche sur lesquels vous travaillez ? Chacun a probablement besoin de versions différentes des mêmes librairies.
Scénario réaliste : - Projet A : Cartographie de zones protégées (GeoPandas 0.12, GDAL 3.6) - Projet B : Classification d'images satellites avec Random Forest (GeoPandas 0.14, GDAL 3.8, scikit-learn, rasterio)
Naïvement, vous pourriez installer toutes les librairies globalement. Mais quand vous installez GeoPandas 0.14 pour le Projet B, cela casse les dépendances du Projet A (qui attend 0.12).
♦︎ Avec Conda, chaque projet a son propre "environnement virtuel" avec ses propres versions :
# Passer du Projet A au Projet B
conda activate projet-a # Vous utilisez GeoPandas 0.12
# ... travail sur Projet A ...
conda activate projet-b # Vous utilisez GeoPandas 0.14
# ... travail sur Projet B ...
conda deactivate # Revenir à l'environnement base
Avantage : Zéro conflit, zéro casse-tête. Chaque projet vit dans son propre "appartement virtuel".