Python venv CheatSheet
een aantal handige venv-commands
Venv is een virtuele omgevingsbeheer commandline tool. Een veel eenvoudigere optie vergeleken met Anaconda. Hier zijn enkele nuttige venv commando’s.
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:
De shell-prompt moet nu de omgevingsnaam tonen.source venv/bin/activate
De virtuele omgeving deactiveren
- Op alle platforms:
Dit brengt je terug naar je systeem Python.deactivate
Pakketten installeren
- Met pip:
Voorbeeld:pip install
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:
Zorg ervoor dat je virtuele omgeving is geactiveerd voordat je deze commando’s uitvoert.pip install -r requirements.txt
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==
) inrequirements.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 geeftpip 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.