Skip to content

Virtual Environments

Virtual environments zijn geïsoleerde Python-omgevingen waarin je packages kunt installeren zonder je systeem-Python te beïnvloeden. Ze zijn onmisbaar voor het werken aan meerdere projecten met verschillende dependencies.


Wat zijn virtual environments?

Het probleem

Stel je werkt aan twee projecten:

  • Project A heeft pandas 1.5 nodig
  • Project B heeft pandas 2.0 nodig

Zonder virtual environments heb je een probleem: je kunt maar één versie van pandas tegelijk geïnstalleerd hebben op je systeem.

De oplossing

Een virtual environment is een aparte, geïsoleerde Python-installatie voor elk project. Elk environment heeft zijn eigen:

  • Python versie (optioneel)
  • Geïnstalleerde packages
  • Package versies
1
2
3
4
5
6
7
Systeem Python
├── Project A (venv)
│   └── pandas 1.5, scikit-learn 1.0, ...
├── Project B (venv)
│   └── pandas 2.0, tensorflow 2.12, ...
└── Project C (venv)
    └── pandas 1.5, torch 2.0, ...

Voordelen

Voordeel Toelichting
Isolatie Projecten beïnvloeden elkaar niet
Reproduceerbaarheid Exact dezelfde omgeving op andere machines
Opgeruimd systeem Systeem-Python blijft schoon
Versieconflicten voorkomen Elk project kan andere versies hebben
Makkelijk opruimen Verwijder de map en alles is weg

Hoe maak je een virtual environment?

Met venv (ingebouwd in Python)

venv is de standaard module voor virtual environments in Python 3.3+.

Stap 1: Environment aanmaken

1
2
3
4
5
# Windows
python -m venv mijn_project_env

# macOS / Linux
python3 -m venv mijn_project_env

Dit maakt een map mijn_project_env met daarin een complete Python-installatie.

Stap 2: Environment activeren

1
2
3
4
5
6
7
8
# Windows (Command Prompt)
mijn_project_env\Scripts\activate

# Windows (PowerShell)
mijn_project_env\Scripts\Activate.ps1

# macOS / Linux
source mijn_project_env/bin/activate

Je ziet nu de environment-naam in je terminal:

1
(mijn_project_env) C:\Users\student\project>

Stap 3: Packages installeren

1
pip install pandas scikit-learn matplotlib

Stap 4: Environment deactiveren

1
deactivate

Mapstructuur

Na het aanmaken ziet de structuur er zo uit:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
mijn_project/
├── mijn_project_env/     # Virtual environment (niet committen!)
│   ├── Include/
│   ├── Lib/
│   │   └── site-packages/   # Hier komen je packages
│   ├── Scripts/             # activate, pip, python
│   └── pyvenv.cfg
├── src/                     # Je code
├── requirements.txt         # Dependencies
└── README.md

!!! warning "Niet committen naar git" Voeg je virtual environment map toe aan .gitignore. De map kan honderden MB groot zijn en is niet nodig — anderen kunnen de environment recreëren met requirements.txt.


Hoe werk je met virtual environments?

Dagelijkse workflow

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# 1. Navigeer naar je project
cd mijn_project

# 2. Activeer de environment
mijn_project_env\Scripts\activate  # Windows
source mijn_project_env/bin/activate  # macOS/Linux

# 3. Werk aan je code
python train_model.py
jupyter notebook

# 4. Installeer nieuwe packages indien nodig
pip install nieuwe_package

# 5. Deactiveer wanneer je klaar bent
deactivate

Requirements.txt

Een requirements.txt bevat alle dependencies van je project:

1
2
3
4
pandas==2.0.3
scikit-learn==1.3.0
matplotlib==3.7.2
numpy==1.24.3

Requirements genereren

1
2
# Alle packages in huidige environment
pip freeze > requirements.txt

Requirements installeren

1
2
# In een nieuwe/lege environment
pip install -r requirements.txt

Environment recreëren

Wanneer iemand anders (of jij op een andere machine) het project kloont:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 1. Clone het project
git clone https://github.com/user/project.git
cd project

# 2. Maak een nieuwe environment
python -m venv venv

# 3. Activeer
venv\Scripts\activate  # Windows

# 4. Installeer dependencies
pip install -r requirements.txt

# 5. Klaar om te werken!

Handige pip commando's

Commando Beschrijving
pip install package Installeer een package
pip install package==1.2.3 Installeer specifieke versie
pip uninstall package Verwijder een package
pip list Toon geïnstalleerde packages
pip show package Toon details van een package
pip freeze Output alle packages met versies
pip install --upgrade package Update een package

Controleren welke Python je gebruikt

1
2
3
4
5
6
# Welke Python is actief?
which python      # macOS/Linux
where python      # Windows

# Zou moeten wijzen naar je venv:
# C:\Users\student\project\venv\Scripts\python.exe

Anaconda (optioneel)

Anaconda is een Python-distributie gericht op data science. Het bevat conda, een alternatieve package manager en environment manager.

Verschil met venv

Aspect venv + pip Anaconda + conda
Installatie Python standaard Aparte download (~500MB)
Package manager pip conda (+ pip)
Packages PyPI Anaconda repository (+ PyPI)
Non-Python deps Lastig Ingebouwd (bijv. CUDA, MKL)
Environments Per project Centraal beheerd
Disk usage Kleiner Groter
Snelheid Sneller Trager (maar verbeterd)

Wanneer Anaconda gebruiken?

Situatie Aanbeveling
Data science / ML ✅ Anaconda is handig
Complexe dependencies (CUDA, etc.) ✅ Conda regelt dit
Lightweight projecten ❌ venv is genoeg
Productie / deployment ⚠️ venv vaak simpeler
Beginners ✅ Anaconda Navigator is gebruiksvriendelijk

Conda environment maken

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
# Environment aanmaken
conda create --name mijn_project python=3.10

# Activeren
conda activate mijn_project

# Packages installeren
conda install pandas scikit-learn matplotlib

# Of met pip (binnen conda env)
pip install some_package

# Deactiveren
conda deactivate

# Environment verwijderen
conda remove --name mijn_project --all

Conda environments beheren

1
2
3
4
5
6
7
8
# Lijst van alle environments
conda env list

# Environment exporteren
conda env export > environment.yml

# Environment recreëren van yml
conda env create -f environment.yml

environment.yml voorbeeld

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
name: mijn_project
channels:
  - conda-forge
  - defaults
dependencies:
  - python=3.10
  - pandas=2.0
  - scikit-learn=1.3
  - matplotlib=3.7
  - pip:
    - some_pip_only_package==1.0.0

Miniconda

Miniconda is een lichtgewicht versie van Anaconda:

  • Alleen conda + Python
  • Geen voorgeïnstalleerde packages
  • ~50MB in plaats van ~500MB
  • Installeer alleen wat je nodig hebt
1
2
# Na Miniconda installatie
conda install pandas  # Installeer wat je nodig hebt

Best practices

Practice Reden
Eén environment per project Voorkomt conflicten
Altijd requirements.txt bijhouden Reproduceerbaarheid
Venv/conda map in .gitignore Houdt repo klein
Gebruik consistente naamgeving venv, .venv, of env
Pin versienummers pandas==2.0.3 niet pandas
Regelmatig updaten Security fixes, bug fixes

.gitignore template

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# Virtual environments
venv/
.venv/
env/
.env/

# Conda
*.conda

# Python
__pycache__/
*.py[cod]
*.egg-info/

# Jupyter
.ipynb_checkpoints/

!!! tip "VS Code en virtual environments" VS Code detecteert automatisch virtual environments. Als dat niet werkt:

1
2
3
1. Open Command Palette (`Ctrl+Shift+P`)
2. Zoek "Python: Select Interpreter"
3. Kies de Python uit je venv