Python venv CheatSheet

een aantal handige venv-commands

Inhoud

Venv is een virtuele omgevingsbeheer commandline tool. Een veel eenvoudigere optie vergeleken met Anaconda. Hier zijn enkele nuttige venv commando’s.

Een python probeert een houten doos open te maken.

Python venv Cheat Sheet

Een virtuele omgeving aanmaken

  • Standaard commando (Python 3.3+):

    python -m venv venv
    

    Dit maakt een virtuele omgeving genaamd venv in je huidige directory.

  • Met een specifieke Python-versie (indien geïnstalleerd):

    python3.10 -m venv venv
    

    of met behulp van virtualenv:

    virtualenv -p /usr/local/bin/python3.10 venv
    

    (Vereist het virtualenv-pakket).

De virtuele omgeving activeren

  • Op Windows:
    .\venv\Scripts\activate
    
  • Op macOS/Linux:
    source venv/bin/activate
    
    De shell-prompt moet nu de omgevingsnaam tonen.

De virtuele omgeving deactiveren

  • Op alle platforms:
    deactivate
    
    Dit brengt je terug naar je systeem Python.

Pakketten installeren

  • Met pip:
    pip install
    
    Voorbeeld:
    pip install numpy pandas
    
  • Pip updaten (aanbevolen):
    python -m pip install --upgrade pip
    

Vergrendelen en exporteren van vereisten

  • Huidige omgevingspakketten opslaan:
    pip freeze > requirements.txt
    
  • Installeren vanuit een vereistenbestand:
    pip install -r requirements.txt
    
    Zorg ervoor dat je virtuele omgeving is geactiveerd voordat je deze commando’s uitvoert.

Een virtuele omgeving verwijderen

deactivate
rm -rf <env path>

Algemene valkuilen bij het beheren van Python virtuele omgevingen

Het vergeten om de virtuele omgeving te activeren

  • Een veelvoorkomende fout is het uitvoeren van commando’s zonder de bedoelde virtuele omgeving te activeren, wat leidt tot het installeren van pakketten in de globale omgeving of de verkeerde venv. Dit kan leiden tot afhankelijkheidsconflicten en onvoorspelbaar gedrag.

Niet vastleggen van pakketversies

  • Het gebruik van losse versiespecifiërs (zoals >= in plaats van ==) in requirements.txt ondermijnt herbruikbaarheid. Exacte versievastlegging zorgt ervoor dat iedereen die werkt aan het project dezelfde pakketversies gebruikt, waardoor onverwachte problemen tijdens implementatie of samenwerking worden voorkomen.

Het mixen van globale en virtuele omgevingen

  • Accidentslijk installeren van pakketten globaal of het mixen van globale en virtuele omgevingen kan conflicten veroorzaken, vooral als verschillende projecten onverenigbare pakketversies vereisen. Zorg altijd dat je werkt binnen de juiste omgeving.

Het committen van virtuele omgevingen naar versiebeheer

  • Het opnemen van de virtuele omgevingsdirectory (bijvoorbeeld venv/) in versiebeheer vergroot repositories en is overbodig. Voeg altijd venv-directories toe aan .gitignore om je repository schoon te houden.

Het negeren van het onderscheiden van ontwikkeling en productie-afhankelijkheden

  • Het falen om ontwikkeling en productie-afhankelijkheden te onderscheiden kan leiden tot overbelaste of onveilige implementaties. Gebruik aparte vereistenbestanden of configuratiestukken voor elk.

Gebrek aan documentatie en automatisering

  • Niet documenteren van omgevingsinstellingen of het falen om het proces te automatiseren (met scripts of Makefiles) maakt het onboarding van nieuwe medewerkers en het reproduceren van omgevingen moeilijker.

Het niet regelmatig opruimen van oude omgevingen

  • Tijdens de loop van de tijd kunnen ongebruikte virtuele omgevingen zich ophopen, wat schijfopslag verspilt en verwarring veroorzaakt. Ruim regelmatig verouderde venvs op om een nette werkplek te behouden.

Het negeren van grenzen van systeem Python en pakketbeheer

  • Het wijzigen van de systeem Python of het mixen van systeempakketbeheer met pip kan systeemtools beschadigen en moeilijk te diagnosticeren problemen veroorzaken. Gebruik altijd venvs voor projectafhankelijkheden en vermijd het storen van systeembeheerde pakketten.

Samenvattingstabel

Valkuil Impact
Het vergeten om venv te activeren Installeert pakketten in de verkeerde omgeving
Niet vastleggen van pakketversies Onvoorspelbare builds, moeilijk reproduceren
Mixen van globale en virtuele omgevingen Afhankelijkheidsverschillen
Committen van venv directories naar versiebeheer Overbelaste, onoverzichtelijke repositories
Niet onderscheiden van ontwikkeling en productie Overbelaste/onveilige productieomgevingen
Gebrek aan documentatie/automatisering Moeilijk onboarding, onconsistentie
Niet opruimen van oude omgevingen Schijfopslagverspilling, verwarring
Wijzigen van systeem Python of pakketten Systeeminstabiliteit, gebroken tools

Het volgen van best practices, zoals altijd venv activeren, afhankelijkheden vastleggen, omgevingen onderscheiden en duidelijke documentatie onderhouden, kan je helpen om deze veelvoorkomende valkuilen te vermijden.

Belangrijkste verschillen tussen Conda en virtuele omgevingen voor herbruikbaarheid

Kenmerk Conda-omgevingen Python virtuele omgevingen (venv/virtualenv)
Beheerscoppie Beheert Python-pakketten en niet-Python-afhankelijkheden (bijv. systeembibliotheken, compilers) Beheert alleen Python-pakketten via pip
Beheer van Python-versie Kan elke Python-versie per omgeving specificeren en installeren Gebruikt de systeemgeïnstalleerde Python-versie
Kruisplatform consistentie Meer consistent over verschillende OS (Windows, macOS, Linux) vanwege het beheren van alle afhankelijkheden Relieert op systeembibliotheken, die kunnen variëren per OS
Pakketbronnen Gebruikt Conda-repositories (vooraf gecompileerde binaire bestanden, wetenschappelijke stack) Gebruikt PyPI (pip) voor Python-pakketten
Herbruikbaarheid Hoger voor complexe, wetenschappelijke of gemengde taalprojecten; kan volledige omgeving exporteren (conda env export) Goed voor zuivere Python-projecten; kan herbruikbaarheid verliezen als systeemafhankelijkheden betrokken zijn
Niet-Python-afhankelijkheden Kan installeren en beheren (bijv. OpenBLAS, libpng) Kan niet beheren; moeten apart geïnstalleerd worden
Export/Import van omgevingen conda env export / conda env create voor volledige herbruikbaarheid pip freeze > requirements.txt / pip install -r requirements.txt (Alleen Python-pakketten)
Prestaties Snel en betrouwbaar voor grote wetenschappelijke pakketten (bijv. numpy, pandas) Kan vereisen om vanuit bron te compileren, vooral op Windows
Complexiteit Slight hogere opzet- en beheeroverhead Leger, ideaal voor basis Python-projecten

Samenvatting van belangrijke punten

  • Conda-omgevingen zijn ideaal voor herbruikbaarheid in projecten die zowel Python- als niet-Python-afhankelijkheden vereisen, of wanneer exacte replicatie over platforms kritisch is. Conda beheert de hele stack, inclusief Python zelf, bibliotheken en zelfs compilers, waardoor het makkelijker is om complexe omgevingen te delen en te reproduceren, vooral in datawetenschappelijke en onderzoekscontexten.

  • Python virtuele omgevingen (venv/virtualenv) zijn lichtgewicht en uitstekend voor het isoleren van Python-afhankelijkheden in zuivere Python-projecten. Ze beheren echter geen systeemniveau- of niet-Python-afhankelijkheden, dus herbruikbaarheid kan worden ondermijnd als je project afhankelijk is van externe bibliotheken of specifieke systeemconfiguraties.

  • Exporten en delen van omgevingen: Conda laat je een volledige omgevingsspecificatie exporteren (conda env export), inclusief alle afhankelijkheden en hun versies, die exact elders kunnen worden gereproduceerd. Met virtuele omgevingen geeft pip freeze alleen Python-pakketten weer, niet systeemafhankelijkheden of de Python-interpreterversie.

  • Conclusie
    Gebruik Conda voor maximale herbruikbaarheid in wetenschappelijke, kruisplatform of complexere projecten. Gebruik Python virtuele omgevingen voor lichtgewicht, zuivere Python-projecten waar systeemafhankelijkheden geen probleem zijn.