Als je je Python ontwikkelomgeving met conda beheert, raden we aan om eerst het onderstaande artikel te lezen.

Het onderstaande artikel vat deze inhoud kort samen en biedt een praktische gids over het creëren, verwijderen, dupliceren en migreren van conda omgevingen.


1. Anaconda vs Miniconda in één zin samengevat



In het kort kan het als volgt worden bekeken.

  • Anaconda:
    → Een alles-in-één distributie die vaak gebruikte pakketten voor datawetenschap/machine learning in één keer installeert.

  • Miniconda:
    → Biedt alleen de functies voor conda omgeving/pakketbeheer en,
    de ontwikkelaar kan zelf de benodigde pakketten kiezen en installeren in deze minimale distributie.

Ik geef de voorkeur aan de stijl van “licht beginnen en alleen pakketten toevoegen wanneer dat nodig is”, daarom
raad ik aan om in de meeste gevallen Miniconda te installeren en daarbovenop omgevingen op te bouwen.

  • Beheert minder schijfruimte

  • Minder gedoe bij updates

  • Installeert alleen wat nodig is per project, zodat de omgeving minder rommelig wordt.


2. Voorbeeld van het concept van conda omgevingen

De “omgeving (environment)” van conda is eenvoudig gezegd een set van Python/pakketten die per project zijn gescheiden.

  • env A: Python 3.10 + Django 4 + specifieke bibliotheekversies

  • env B: Python 3.11 + FastAPI + totaal andere set bibliotheken

Het belangrijkste is om verschillende versies te isoleren zodat ze elkaar niet beïnvloeden.

De basiscommando's die vaak worden gebruikt met betrekking tot omgevingen zijn als volgt.

# Bekijk de huidige geïnstalleerde conda omgevingen
conda env list

# Of
conda info --envs

3. Een conda omgeving creëren



3.1 De meest basale omgeving creëren

conda create -n myenv python=3.12
  • -n myenv: Geeft de naam van de omgeving op als myenv

  • python=3.12: Gebruik Python versie 3.12

Nadat de omgeving is gemaakt:

conda activate myenv   # Activeer de omgeving
conda deactivate       # Deactiveer de omgeving

3.2 Meest gebruikte pakketten samen installeren

conda create -n myenv python=3.12 numpy pandas matplotlib

Er wordt een nieuwe omgeving aangemaakt met de bovengenoemde pakketten die zijn geïnstalleerd via het basis kanaal van de reeds geïnstalleerde Miniconda.

Aansluitend kan je:

conda activate myenv
conda install scikit-learn
# Of
pip install requests

Op elk gewenst moment extra pakketten toevoegen.


4. Een conda omgeving verwijderen

Het is verstandig om omgevingen die je niet meer gebruikt, resoluut te verwijderen.
(de conda omgeving is vaak redelijk ruimte-innemend.)

# myenv omgeving verwijderen
conda env remove -n myenv

Verificatie na verwijdering:

conda env list

Als myenv niet meer op de lijst staat, is dat normaal.


5. Een conda omgeving dupliceren (clone)

Als je een omgeving hebt waarin je van alles hebt uitgeprobeerd en je wilt
“een omgeving met soortgelijke instellingen maar met een andere naam” maken, is dit nuttig.

# Maak een duplicaat omgeving genaamd new-env op basis van existing-env
conda create -n new-env --clone existing-env
  • Aangezien de pakketversies behouden blijven,

  • is dit een veelvoorkomend patroon wanneer je “de oude omgeving wilt behouden en een nieuwe experiment wilt uitvoeren.”

Na duplicatie:

conda activate new-env

om te controleren of het goed werkt.


6. Een conda omgeving migreren (export / import)

Als je je omgeving naar een andere PC of server wilt verplaatsen,
is het meest gebruikelijke om de omgeving naar een bestand te exporteren (import/export) en vervolgens een nieuwe omgeving op basis van dat bestand te maken.

6.1 Omgeving exporteren – Maak een YAML-bestand aan

# Exporteer mijn omgeving naar het env.yml bestand
conda env export -n myenv > env.yml

In dit env.yml bestand staan:

  • De omgeving naam

  • De informatie over gebruikte kanalen

  • Geïnstalleerde pakketten en versies

Dit staat genoteerd.

Als je alleen de minimale lijst op basis van de geschiedenis wilt exporteren

plaats je deze:
conda env export -n myenv --from-history > env-min.yml

Als je dit doet, zal conda de benodigde afhankelijkheden vanzelf afhandelen wanneer je het in een andere omgeving creatieert.

6.2 Maak een omgeving op een andere plaats (of op dezelfde machine)

Op een andere PC, server, of op een nieuwe locatie op dezelfde machine:

conda env create -f env.yml

Je kunt hiermee een omgeving maken op basis van de naam en pakketversies gedefinieerd in env.yml.

  • Als env.yml bevat name: myenv, dan wordt die naam gebruikt.

  • Wil je de naam wijzigen, pas dan het name: gedeelte van het env.yml bestand aan voordat je het uitvoert.

Bijvoorbeeld, als je name: myenv in env.yml wijzigt naar name: myenv-dev, en vervolgens:

conda env create -f env.yml
conda activate myenv-dev

kun je de zelfde configuratie met een andere naam opnieuw krijgen.


7. Veelgebruikte conda patronen samenvatten

Bij het opzetten van een omgeving op basis van Miniconda, zullen we enkele nuttige patronen samenvatten.

  1. Een omgeving voor elk project

    • Geeft omgevingen de naam naar de projectnaam, zoals proj-a-env, proj-b-env.

    • Dit maakt het makkelijker om versiebeheer zonder conflicten.

  2. Beperk de installatie tot het minimum en breid alleen uit bij behoefte

    • Begin met python en een paar basis pakketten.

    • Voeg uit terwijl je ontwikkelt met conda install of pip install
      → Dit sluit goed aan bij de minimalistische filosofie van Miniconda.

  3. Regelmatig belangrijke omgevingen exporteren

    • Bij een moment van release, voordat je distribueert:

      bash conda env export -n proj-a-env --from-history > proj-a-env.yml

    • Als je dit bestand opslaat en commit naar je repository,
      kan een teamgenoot dezelfde omgeving gemakkelijk reproduceren.

  4. Maak een back-up met clone voor grote wijzigingen

    • Voor grote pakket-upgrades, of een verandering van de Python-versie:

      bash conda create -n proj-a-backup --clone proj-a-env

    • Als er iets misgaat, kan je snel terugkeren naar de back-up omgeving.


python conda omgeving afbeelding

Conclusie: Licht beginnen en uitbreiden indien nodig

Samenvattend zijn de keuzes eenvoudig.

  • Anaconda is de manier om “potentieel benodigde pakketten” in één keer te installeren.

  • Miniconda is de manier om “slechts dat wat echt nodig is op het juiste moment te installeren” en licht te houden.

In situaties zoals tegenwoordig, waar elke project specifieke vereisten voor Python versies en pakketten heeft,
is de combinatie Miniconda + goed beheerde conda omgevingen veel flexibeler.

Omgevingen:

  • maken (conda create)

  • activeren (conda activate)

  • verwijderen (conda env remove)

  • dupliceren (conda create --clone)

  • verplaatsen (conda env export / conda env create)

Als je dit basisniveau beheerst, zal je veel minder zorgen hebben bij het beginnen van een nieuw project met
“Wat moet ik nu weer verwijderen en wat opnieuw installeren?”

Bij het starten van een nieuw project:

  1. Maak een nieuwe omgeving op basis van Miniconda

  2. Installeer daarin alleen de echt noodzakelijke pakketten.

  3. Als je tevreden bent met de omgeving configuratie, exporteer deze dan naar env.yml zodat je deze kunt gebruiken
    bij je volgende project door slechts kleine aanpassingen te maken.

Als je deze patronen onder de knie hebt, zal het beheer van conda omgevingen geen rommelige taak meer zijn, maar
een “betrouwbare gewoonte om projecten schoon te houden”.