Een virtuele omgeving met de bestaande Python maken.
De interpreter van die omgeving expliciet kiezen.
Argumenten doorgeven en pakketomgevingen gescheiden houden.
Twee projecten kunnen verschillende pakketten nodig hebben. Als alles in één gedeelde Pythoninstallatie belandt, kan een aanpassing voor het ene project het andere raken. Geef ieder project daarom een eigen plek voor zijn geïnstalleerde pakketten.
Een omgeving naast je broncode
Een virtuele omgeving is een map met een eigen ingang naar Python en een eigen pakketmap. De bestaande basisinterpreter levert de Pythonversie. Een omgeving maken verandert dus niet vanzelf Python 3.14 in Python 3.15.
De projectbeschrijving uit de vorige les zegt wat nodig is. De omgeving is de plek waar je het kunt gebruiken. Je eigen broncode blijft buiten die omgevingsmap; bewaar de beschrijving in Git en maak de omgeving opnieuw wanneer dat nodig is.
Deze oefening voert echte commando’s uit in een tijdelijke Linuxomgeving. Je bewerkt bestanden met de extensie .sh: een shell leest hun commandoregels. De meegeleverde Pythoncontrole voert die bestanden voor je uit; je hoeft geen terminal op je eigen computer te openen.
De eerste regel start de standaardmodule venv en maakt .demo. Met --without-pip slaan we de installatie van pip over; deze oefening heeft geen downloads nodig. Het tweede commando start expliciet Python vanuit de nieuwe omgeving.
Op Linux staat die ingang onder bin/python; op Windows is dat doorgaans Scripts/python.exe. De bestandsnamen in deze opdrachten horen bij de Linux-oefenomgeving. Op je eigen computer kies je later het pad dat bij jouw systeem past.
Het eerste voorbeeld maakt een andere omgeving dan de opdracht. De meegeleverde hulpcode geeft de werkelijk ontvangen uitvoer door. Let op de combinatie van de omgevingstest en het versienummer.
De omgeving en haar basis delen een versie maar hebben een andere prefix
Python geeft zijn omgeving weer via sys.prefix en zijn basis via sys.base_prefix. Zijn die verschillend, dan draait deze interpreter in een virtuele omgeving. Alleen kijken naar het Pythonversienummer vertelt dat niet: twee omgevingen kunnen dezelfde versie hebben.
Activeren past onder meer het zoekpad van je shell aan, zodat een kort commando zoals python de gewenste interpreter kan vinden. Het is optioneel wanneer je het interpreterpad expliciet opgeeft. Een aangepaste prompt of de variabele VIRTUAL_ENV alleen bewijst niet welke interpreter je werkelijk gestart hebt.
Argumenten heel doorgeven
Een commandobestand kan argumenten ontvangen. In een shell staat "$@" voor alle ontvangen argumenten, met behoud van hun afzonderlijke grenzen. Zo blijft de naam "lange wandeling" één argument in plaats van twee losse woorden.
.demo/bin/python report.py "$@"
Het meegeleverde rapport gebruikt argparse, dat je al kent. Het drukt een aantal, een naam en de naam van zijn Pythonomgeving af. Jij schrijft alleen het startcommando en laat de ontvangen argumenten doorgeven.
Veelgemaakte fout: alleen de map maken
Het tweede voorbeeld maakt wel een omgeving, maar start daarna de basisinterpreter. De omgevingstest is daardoor False. Het versienummer blijft gelijk, waardoor je deze fout met alleen een versiecontrole zou missen.
Een gemaakte omgeving kiest niet vanzelf de interpreter van het volgende commando
Een tweede project krijgt een verse omgeving, geen gekopieerde eerste omgeving. De controle plaatst een kleine proefmodule uitsluitend in de eerste pakketmap. De tweede omgeving en de basisinterpreter horen die module niet te kunnen importeren.
AAN DE SLAG 0/4
1
Een echte virtuele omgeving maken
Zet in create.sh de regel python3 -m venv --without-pip .venv. Maak een echte omgeving op basis van de beschikbare Python 3.14.2, zonder toegang tot de systeem-site-packages. Een lege map of alleen een succesmelding is onvoldoende.
2
De omgeving via haar eigen Python bekijken
Start in inspect.sh het meegeleverde inspect_env.py met .venv/bin/python. De controle voert create.sh eerst uit. De ontvangen gegevens moeten de echte .venv als prefix, een andere basisprefix en Python 3.14.2 tonen; verzin geen JSON-uitvoer.
3
Een programma met zijn argumenten starten
Start in report.sh het meegeleverde report.py met .venv/bin/python en geef alle ontvangen argumenten door met "$@". Ook een naam met spaties moet één argument blijven. create.sh wordt eerst uitgevoerd; het rapport moet de omgeving .venv noemen.
4
Een tweede onafhankelijke omgeving maken
Maak in second.sh met de basisinterpreter een verse omgeving .other, eveneens zonder pip en zonder systeem-site-packages. Kopieer .venv niet. Een proefmodule die alleen in .venv is geplaatst, moet daar werken en in .other en de basisinterpreter een echte ModuleNotFoundError geven.
Onthoud dit
Maak een omgeving met een gekozen basisinterpreter.
Start de juiste Python expliciet of activeer bewust je shell.
Houd de pakketten van verschillende projecten gescheiden.
Hierna gebruik je uv om projectafspraken vast te leggen en een omgeving te synchroniseren.
Je hoeft het niet in één keer goed te doen. Na het uitvoeren zie je hier welke stappen al kloppen.
1Een echte virtuele omgeving maken2De omgeving via haar eigen Python bekijken3Een programma met zijn argumenten starten4Een tweede onafhankelijke omgeving maken