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
| 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
| # 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
| # 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:
| (mijn_project_env) C:\Users\student\project>
|
Stap 3: Packages installeren
| pip install pandas scikit-learn matplotlib
|
Stap 4: Environment deactiveren
Mapstructuur
Na het aanmaken ziet de structuur er zo uit:
| 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:
| pandas==2.0.3
scikit-learn==1.3.0
matplotlib==3.7.2
numpy==1.24.3
|
Requirements genereren
| # Alle packages in huidige environment
pip freeze > requirements.txt
|
Requirements installeren
| # 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
| # 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
| # 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
| 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
| # 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. Open Command Palette (`Ctrl+Shift+P`)
2. Zoek "Python: Select Interpreter"
3. Kies de Python uit je venv
|