Ga naar inhoud

Omgevingsvariabelen

Tip

Als je al weet wat "omgevingsvariabelen" zijn en hoe je ze kunt gebruiken, kun je deze stap gerust overslaan.

Een omgevingsvariabele (ook bekend als "env var") is een variabele die buiten de Python-code leeft, in het besturingssysteem en die door je Python-code (of door andere programma's) kan worden gelezen.

Omgevingsvariabelen kunnen nuttig zijn voor het bijhouden van applicatie instellingen, als onderdeel van de installatie van Python, enz.

Omgevingsvariabelen maken en gebruiken

Je kunt omgevingsvariabelen maken en gebruiken in de shell (terminal), zonder dat je Python nodig hebt:

fast →export MY_NAME="Wade Wilson"
echo "Hello $MY_NAME"
Hello Wade Wilson

restart ↻
fast →$Env:MY_NAME = "Wade Wilson"
echo "Hello $Env:MY_NAME"
Hello Wade Wilson

restart ↻

Omgevingsvariabelen uitlezen in Python

Je kunt omgevingsvariabelen buiten Python aanmaken, in de terminal (of met een andere methode) en ze vervolgens in Python uitlezen.

Je kunt bijvoorbeeld een bestand main.py hebben met:

import os

name = os.getenv("MY_NAME", "World")
print(f"Hello {name} from Python")

Tip

Het tweede argument van os.getenv() is de standaardwaarde die wordt geretourneerd.

Als je dit niet meegeeft, is de standaardwaarde None. In dit geval gebruiken we standaard "World".

Dan zou je dat Python-programma kunnen aanroepen:

fast →python main.py

Hello World from Python

export MY_NAME="Wade Wilson"
python main.py

Hello Wade Wilson from Python

restart ↻
fast →python main.py

Hello World from Python

$Env:MY_NAME = "Wade Wilson"
python main.py

Hello Wade Wilson from Python

restart ↻

Omdat omgevingsvariabelen buiten de code kunnen worden ingesteld, maar wel door de code kunnen worden gelezen en niet hoeven te worden opgeslagen (gecommit naar git) met de rest van de bestanden, worden ze vaak gebruikt voor configuraties of instellingen.

Je kunt ook een omgevingsvariabele maken die alleen voor een specifieke programma-aanroep beschikbaar is, die alleen voor dat programma beschikbaar is en alleen voor de duur van dat programma.

Om dat te doen, maak je het vlak voor het programma zelf aan, op dezelfde regel:

fast →MY_NAME="Wade Wilson" python main.py

Hello Wade Wilson from Python

python main.py
Hello World from Python

restart ↻

Tip

Je kunt er meer over lezen op The Twelve-Factor App: Config.

Types en Validatie

Deze omgevingsvariabelen kunnen alleen tekstuele gegevens verwerken, omdat ze extern zijn aan Python, compatibel moeten zijn met andere programma's en de rest van het systeem (zelfs met verschillende besturingssystemen, zoals Linux, Windows en macOS).

Dat betekent dat elke waarde die in Python uit een omgevingsvariabele wordt gelezen een str zal zijn en dat elke conversie naar een ander type of elke validatie in de code moet worden uitgevoerd.

Meer informatie over het gebruik van omgevingsvariabelen voor het verwerken van applicatie instellingen vind je in de Geavanceerde gebruikershandleiding - Instellingen en Omgevingsvariabelen.

PATH Omgevingsvariabele

Er is een speciale omgevingsvariabele met de naam PATH, die door de besturingssystemen (Linux, macOS, Windows) wordt gebruikt om programma's te vinden die uitgevoerd kunnen worden.

De waarde van de variabele PATH is een lange string die bestaat uit mappen die gescheiden worden door een dubbele punt : op Linux en macOS en door een puntkomma ; op Windows.

De omgevingsvariabele PATH zou er bijvoorbeeld zo uit kunnen zien:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

Dit betekent dat het systeem naar programma's zoekt in de mappen:

  • /usr/local/bin
  • /usr/bin
  • /bin
  • /usr/sbin
  • /sbin
C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32

Dit betekent dat het systeem naar programma's zoekt in de mappen:

  • C:\Program Files\Python312\Scripts
  • C:\Program Files\Python312
  • C:\Windows\System32

Wanneer je een opdracht in de terminal typt, zoekt het besturingssysteem naar het programma in elk van de mappen die vermeld staan in de omgevingsvariabele PATH.

Wanneer je bijvoorbeeld python in de terminal typt, zoekt het besturingssysteem naar een programma met de naam python in de eerste map in die lijst.

Zodra het gevonden wordt, zal het dat programma gebruiken. Anders blijft het in de andere mappen zoeken.

Python installeren en PATH bijwerken

Wanneer je Python installeert, word je mogelijk gevraagd of je de omgevingsvariabele PATH wilt bijwerken.

Stel dat je Python installeert en het komt terecht in de map /opt/custompython/bin.

Als je kiest om de PATH omgevingsvariabele bij te werken, zal het installatieprogramma /opt/custompython/bin toevoegen aan de PATH omgevingsvariabele.

Dit zou er zo uit kunnen zien:

/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/custompython/bin

Op deze manier zal het systeem, wanneer je python in de terminal typt, het Python-programma in /opt/custompython/bin (de laatste map) vinden en dat gebruiken.

Stel dat je Python installeert en het komt terecht in de map C:\opt\custompython\bin.

Als je kiest om de PATH omgevingsvariabele bij te werken, zal het installatieprogramma C:\opt\custompython\bin toevoegen aan de PATH omgevingsvariabele.

C:\Program Files\Python312\Scripts;C:\Program Files\Python312;C:\Windows\System32;C:\opt\custompython\bin

Op deze manier zal het systeem, wanneer je python in de terminal typt, het Python-programma in C:\opt\custompython\bin (de laatste map) vinden en dat gebruiken.

Dus als je typt:

Zal het systeem het python-programma in /opt/custompython/bin vinden en uitvoeren.

Het zou ongeveer hetzelfde zijn als het typen van:

fast →/opt/custompython/bin/python
restart ↻

Zal het systeem het python-programma in C:\opt\custompython\bin\python vinden en uitvoeren.

Het zou ongeveer hetzelfde zijn als het typen van:

fast →C:\opt\custompython\bin\python
restart ↻

Deze informatie is handig wanneer je meer wilt weten over virtuele omgevingen.

Conclusion

Hiermee heb je basiskennis van wat omgevingsvariabelen zijn en hoe je ze in Python kunt gebruiken.

Je kunt er ook meer over lezen op de Wikipedia over omgevingsvariabelen.

In veel gevallen is het niet direct duidelijk hoe omgevingsvariabelen nuttig zijn en hoe je ze moet toepassen. Maar ze blijven in veel verschillende scenario's opduiken als je aan het ontwikkelen bent, dus het is goed om er meer over te weten.

Je hebt deze informatie bijvoorbeeld nodig in de volgende sectie, over Virtuele Omgevingen.