Aller au contenu
English
Compte : non connecté, synchronisation possible Mon apprentissage
Selectionner le thème
English

Conda et Miniconda : environnements Python isolés

Par mis à jour le

Améliorer cette page

Conda est un gestionnaire d'environnements et de paquets pour Python (et d'autres langages) : il crée des environnements isolés, chacun avec sa propre version de Python et ses bibliothèques, sans conflit entre projets. Fini le « ça marche sur ma machine » : chaque projet a son environnement, que l'on peut recréer de façon reproductible (à l'identique sur une même plateforme, avec le bon fichier).

Cette leçon vous fait installer Miniforge (conda avec le canal libre conda-forge) en vérifiant son empreinte, créer un environnement aux versions épinglées, l'exporter de deux façons, le supprimer puis le recréer. Les versions citées ont été relevées le 2026-10-17 sous Linux x86_64 (Debian 13). Prérequis : un terminal Linux, quelques notions de Python et curl (absent d'une Debian minimale : sudo apt install curl). Public : débutants en Python et en data science.

  • Distinguer conda, Anaconda, Miniconda et Miniforge.
  • Installer Miniforge en vérifiant son empreinte SHA-256.
  • Créer et activer un environnement aux versions épinglées.
  • Exporter un environnement de deux façons (--from-history et fichier figé) et le recréer.
  • Choisir entre ces deux exports selon l'objectif de reproductibilité.

Conda résout deux problèmes à la fois : isoler les projets et gérer leurs paquets. Sans lui, installer deux projets qui exigent des versions différentes d'une bibliothèque provoque des conflits. Avec conda, chaque projet vit dans son environnement : une version de Python, un jeu de paquets, indépendants des autres.

Sa particularité face à pip : conda gère aussi des dépendances non Python (bibliothèques C, CUDA, compilateurs), ce qui le rend précieux en data science et en machine learning, où beaucoup de paquets reposent sur du code compilé. Si vous connaissez déjà les environnements virtuels Python, l'idée est la même, avec une portée plus large.

Anaconda, Miniconda ou Miniforge : quelle différence ?

Section intitulée « Anaconda, Miniconda ou Miniforge : quelle différence ? »

Ces noms prêtent à confusion, car ils désignent soit l'outil (conda), soit une façon de l'installer. Voici comment les situer :

TermeCe que c'estCanal par défaut
condaL'outil en ligne de commandeSelon la distribution
MiniforgeInstallateur minimal (conda + Python), maintenu par la communauté conda-forgeconda-forge seul
MinicondaInstallateur minimal édité par Anacondadefaults, canal d'Anaconda
AnacondaDistribution complète (centaines de paquets et interface graphique), volumineusedefaults, canal d'Anaconda

Un canal (channel) est un dépôt de paquets que conda interroge. Le canal conda-forge est communautaire et libre. Le canal defaults d'Anaconda est soumis aux conditions d'utilisation d'Anaconda, qui prévoient une licence payante pour certaines organisations : lisez-les avant d'installer Miniconda ou Anaconda sur un poste professionnel. Cette formation retient Miniforge pour une raison simple : il n'impose aucune condition d'usage d'Anaconda (conda-forge est un canal communautaire, libre d'utilisation) et configure conda-forge dès l'installation.

Comment installer Miniforge et vérifier l'empreinte ?

Section intitulée « Comment installer Miniforge et vérifier l'empreinte ? »

Une empreinte (hash SHA-256) est une suite de 64 caractères calculée à partir du contenu d'un fichier : si un seul octet change, l'empreinte change. On télécharge donc le script d'installation, puis on vérifie son empreinte avant de l'exécuter, plutôt qu'un curl | bash direct. Le nom du fichier porte la version exacte (26.7.2-0), jamais « latest », pour que l'installation soit la même demain. Côté curl, -fsSL fait échouer la commande sur une erreur HTTP et suit les redirections, -O garde le nom du fichier distant. Vérifiez d'abord l'architecture avec uname -m : x86_64 correspond au script -Linux-x86_64.sh utilisé ici, une machine ARM (aarch64) prend le script -Linux-aarch64.sh, dont l'empreinte est différente.

Fenêtre de terminal
uname -m
# x86_64
V=26.7.2-0
BASE="https://github.com/conda-forge/miniforge/releases/download/$V"
curl -fsSL -O "$BASE/Miniforge3-$V-Linux-x86_64.sh"
echo "281b0ac7d550802efc81af633225a5e6116d29ae72f3ab4eae7168c3931a4c05 Miniforge3-26.7.2-0-Linux-x86_64.sh" | sha256sum -c -

La dernière commande compare l'empreinte écrite dans cette leçon à celle du fichier téléchargé, et doit répondre Miniforge3-26.7.2-0-Linux-x86_64.sh: OK. Avec une empreinte différente, elle répond FAILED, puis sha256sum: WARNING: 1 computed checksum did NOT match, et rend le code retour 1 : le fichier est corrompu ou modifié, il ne faut pas l'exécuter.

Ce contrôle prouve l'intégrité : le fichier est bien celui dont vous avez noté l'empreinte. Il ne prouve pas l'authenticité : il ne dit pas qui l'a publié. Le fichier .sha256 de la release, hébergé au même endroit que le script, est la source de l'empreinte ci-dessus, mais il ne suffit pas seul : qui remplacerait le script sur la page de téléchargement remplacerait aussi son fichier d'empreinte. Garder l'empreinte dans la leçon, relevée au moment de sa rédaction, évite cette faiblesse sans prouver pour autant l'éditeur.

L'option -b installe sans poser de questions, -p fixe le dossier. Ensuite, source charge conda dans le terminal courant :

Fenêtre de terminal
bash "Miniforge3-$V-Linux-x86_64.sh" -b -p "$HOME/miniforge3"
source "$HOME/miniforge3/bin/activate"
conda --version
# conda 26.7.2
conda config --show channels
# channels:
# - conda-forge

Le canal conda-forge apparaît seul : c'est la preuve que l'installation ne touche pas aux canaux d'Anaconda. Le prompt affiche (base), l'environnement de base de conda, qu'on évite d'encombrer.

Le source est à refaire dans chaque nouveau terminal, car l'installation avec -b ne modifie pas les fichiers de démarrage du shell. Sans lui, conda: command not found apparaît dès qu'on ouvre une autre fenêtre. Le message de conda suggère parfois conda init, qui modifie ces fichiers : cette leçon préfère le source explicite, qui ne touche à rien.

Comment créer et activer un environnement aux versions épinglées ?

Section intitulée « Comment créer et activer un environnement aux versions épinglées ? »

Épingler une version, c'est demander numpy=2.5.4 plutôt que numpy. Sans épinglage, conda installe la version la plus récente compatible au jour de la commande : deux personnes qui lancent la même commande à six mois d'écart n'obtiennent pas le même environnement. L'environnement de cette formation s'appelle data et contient Python, Jupyter, NumPy, pandas, scikit-learn et matplotlib :

Fenêtre de terminal
conda create -n data \
python=3.12.15 jupyterlab=4.6.4 notebook=7.6.3 nbconvert=7.17.2 \
numpy=2.5.4 pandas=3.0.6 scikit-learn=1.9.1 matplotlib=3.11.2
conda activate data
python --version
# Python 3.12.15

Conda affiche d'abord la liste des paquets à installer et attend une confirmation : tapez y. Il peut aussi avertir que la transaction « includes executing package scripts (pre/post-link/unlink) » : un paquet conda peut exécuter des scripts à l'installation, comme un postinstall. C'est un angle chaîne d'approvisionnement : on n'installe que depuis un canal de confiance (ici conda-forge) et à des versions épinglées. Le prompt affiche ensuite (data), signe que l'environnement est actif : tout ce que vous installez y reste confiné. Pour contrôler les versions réellement installées :

Fenêtre de terminal
python -c "import numpy, pandas, sklearn, matplotlib; print(numpy.__version__, pandas.__version__, sklearn.__version__, matplotlib.__version__)"
# 2.5.4 3.0.6 1.9.1 3.11.2

Pour lister vos environnements et en sortir :

Fenêtre de terminal
conda env list # tous les environnements
conda deactivate # revenir à l'environnement précédent

À l'intérieur d'un environnement actif, on ajoute un paquet avec conda install, de préférence avec sa version (remplacez 1.2.3 par la version voulue). Miniforge utilisant déjà conda-forge, inutile de répéter le canal :

Fenêtre de terminal
conda install nom-du-paquet=1.2.3

Il existe deux exports, qui ne répondent pas à la même question. L'option --from-history ne garde que les paquets que vous avez explicitement demandés, sans les centaines de dépendances transitives (les paquets que vos paquets installent à leur tour). Le fichier reste lisible et portable d'une plateforme à l'autre, mais les dépendances transitives peuvent changer entre deux créations :

Fenêtre de terminal
conda env export --from-history > environment.yml

Sur l'environnement créé plus haut, le fichier produit ressemble à ceci :

name: data
channels:
- conda-forge
dependencies:
- jupyterlab=4.6.4
- nbconvert=7.17.2
- numpy=2.5.4
- pandas=3.0.6
- scikit-learn=1.9.1
- python=3.12.15
- notebook=7.6.3
- matplotlib=3.11.2
prefix: /home/vous/miniforge3/envs/data

Le piège : --from-history n'invente aucune version. Il recopie ce que vous avez tapé. Un environnement créé avec python=3.12 et des paquets sans version s'exporte donc avec ces mêmes demandes floues, et le fichier ne reproduit rien. C'est pourquoi les versions se fixent dès conda create, ou dans un environment.yml écrit à la main. La ligne prefix: est propre à votre machine : supprimez-la avant de partager le fichier.

Pour figer tout l'environnement, dépendances transitives comprises, conda sait écrire une liste explicite : l'URL exacte de chaque paquet installé, avec son empreinte MD5. Ce fichier est propre à une plateforme (son en-tête porte # platform: linux-64), d'où le nom choisi :

Fenêtre de terminal
conda list -n data --explicit --md5 > data-linux-64.txt

Le choix dépend de l'objectif. Prenez environment.yml pour partager la recette d'un projet entre machines ou systèmes différents (Linux, macOS), en acceptant que les dépendances transitives évoluent. Prenez la liste explicite pour rejouer exactement le même environnement sur la même plateforme, par exemple pour reproduire un résultat ou débloquer une CI : elle ne sert pas sur une autre plateforme, où l'on en génère une autre.

Pour vérifier que le fichier suffit, supprimez l'environnement puis recréez-le depuis le fichier. L'option -n data redonne à l'environnement son nom d'origine, que les leçons suivantes retrouvent. Conda peut demander une confirmation avant de supprimer : tapez y.

Fenêtre de terminal
conda deactivate
conda env remove -n data
conda env create -n data -f environment.yml
conda activate data

Avec la liste explicite, la recréation passe par conda create -n data --file data-linux-64.txt à la place de conda env create. Rejouée le 2026-10-17, elle a redonné une liste explicite identique à l'originale.

Si conda activate data réussit et que python --version répond Python 3.12.15, l'environnement est reproductible, et prêt pour les leçons Jupyter.

Ce tableau résume les gestes de la leçon ; il sert de rappel, chaque commande a été vue en contexte plus haut.

CommandeRôle
conda create -n nom python=3.12.15Créer un environnement
conda activate nomActiver un environnement
conda deactivateQuitter l'environnement actif
conda env listLister les environnements
conda install paquetInstaller un paquet
conda env export --from-historyExporter ce qui a été demandé
conda list -n nom --explicit --md5 > nom-linux-64.txtFiger l'environnement exact (une plateforme)
conda create -n nom --file nom-linux-64.txtRecréer depuis la liste explicite
conda env create -n nom -f environment.ymlRecréer depuis un fichier
conda env remove -n nomSupprimer un environnement

Quatre symptômes reviennent chez les débutants. Chacun a une cause simple, qu'on lit dans le message ou dans le prompt.

SymptômeCause probableSolution
conda: command not found après l'installation ou dans un nouveau terminalconda n'est pas chargé dans ce terminalsource "$HOME/miniforge3/bin/activate", puis conda activate data
CondaError: Run 'conda init' before 'conda activate'le binaire conda est trouvé, mais le shell n'est pas initialisésource "$HOME/miniforge3/bin/activate" avant conda activate
sha256sum -c répond FAILEDFichier incomplet ou modifiéSupprimer le script, le retélécharger, ne pas l'exécuter
PackagesNotFoundErrorVersion ou canal inexistantRetirer la version, chercher avec conda search nom, vérifier conda config --show channels
  1. Conda isole les projets : un environnement par projet, sans conflit de versions.
  2. Miniforge installe conda avec conda-forge seul, sans condition commerciale ; Miniconda impose les conditions d'usage des canaux defaults.
  3. Vérifiez l'empreinte (sha256sum -c) d'un script versionné avant de l'exécuter, jamais un fichier latest : cela prouve l'intégrité, pas l'authenticité.
  4. Épinglez les versions dans conda create : --from-history recopie vos demandes, il ne fige ni les dépendances transitives ni rien d'autre.
  5. Deux exports : environment.yml pour la recette portable, liste explicite (--explicit --md5) pour le même environnement sur une plateforme.
  6. Un environnement se prouve en le supprimant puis en le recréant depuis son fichier.
  7. Refaites le source dans chaque nouveau terminal.

Contrôle de connaissances

Validez vos connaissances avec ce quiz interactif

6 questions
6 min.
70% requis

Informations

  • Le chronomètre démarre au clic sur Démarrer
  • Questions à choix multiples, vrai/faux et réponses courtes
  • Vous pouvez naviguer entre les questions
  • Les résultats détaillés sont affichés à la fin

Lance le quiz et démarre le chronomètre

Ce projet vous est utile ?

Les guides, formations, quiz et labs restent gratuits. Si vous les utilisez régulièrement, vous pouvez contribuer à leur maintenance et à leur développement.

Devenir membre de soutien (nouvel onglet) Soutenir une fois (nouvel onglet) En savoir plus

Suivez aussi le projet sur LinkedIn