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.
Alleen voor jou om te weten dat er, naar mijn mening, een veel betere tool is voor het beheer van pakketten en omgevingen in Python dan venv - uv. Kijk hier eens naar: uv - Nieuwe Python Pakket, Project en Omgevingsbeheer
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 (als 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 naam van de omgeving 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 upgraden (aangeraden):
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 geactiveerd is 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 versiespecificeerders (zoals
>=
in plaats van==
) inrequirements.txt
ondermijnt herhaalbaarheid. Exacte versievastlegging zorgt ervoor dat iedereen die aan het project werkt 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 binnen de juiste omgeving werkt.
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 scheiden van ontwikkeling en productieafhankelijkheden
- Het falen om ontwikkeling en productieafhankelijkheden 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 bijdragers 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 |
Het mixen van globale en virtuele omgevingen | Afhankelijkheidsverschillen |
Het committen van venv directories naar versiebeheer | Overbelaste, onoverzichtelijke repositories |
Niet scheiden van ontwikkeling en productieafhankelijkheden | Overbelaste/onveilige productieomgevingen |
Gebrek aan documentatie/automatisering | Moeilijk onboarding, onconsistente instellingen |
Niet opruimen van oude omgevingen | Schijfopslagverspilling, verwarring |
Wijzigen van systeem Python of pakketten | Systeeminstabiliteit, gebroken tools |
Het volgen van best practices, zoals altijd je venv activeren, afhankelijkheden vastleggen, omgevingen scheiden en duidelijke documentatie onderhouden, kan je helpen om deze veelvoorkomende valkuilen te vermijden.
Belangrijkste verschillen tussen Conda en virtuele omgevingen voor herhaalbaarheid
Kenmerk | Conda omgevingen | Python virtuele omgevingen (venv/virtualenv) |
---|---|---|
Bereik van beheer | Beheert Python pakketten en niet-Python afhankelijkheden (bijvoorbeeld 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 |
Herhaalbaarheid | Hoger voor complexe, wetenschappelijke of gemengde taalprojecten; kan volledige omgeving exporteren (conda env export ) |
Goed voor zuivere Python-projecten; kan herhaalbaarheid missen als systeemafhankelijkheden betrokken zijn |
Niet-Python afhankelijkheden | Kan installeren en beheren (bijvoorbeeld OpenBLAS, libpng) | Kan niet beheren; moeten apart geïnstalleerd worden |
Omgevingsexport/import | conda env export / conda env create voor volledige herhaalbaarheid |
pip freeze > requirements.txt / pip install -r requirements.txt (Alleen Python-pakketten) |
Prestaties | Snel en betrouwbaarder voor grote wetenschappelijke pakketten (bijvoorbeeld numpy, pandas) | Kan vereisen om vanuit bron te compileren, vooral op Windows |
Complexiteit | Slight hogere opzet- en beheeroverhead | Leger, geschikt voor basis Python-projecten |
Samenvatting van belangrijke punten
-
Conda-omgevingen zijn ideaal voor herhaalbaarheid 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 data science en onderzoek contexten.
-
Python virtuele omgevingen (
venv
/virtualenv
) zijn lichtgewicht en uitstekend voor het isoleren van Python-afhankelijkheden in zuivere Python-projecten. Echter, ze beheren geen systeemniveau- of niet-Python-afhankelijkheden, dus herhaalbaarheid kan worden ondermijnd als je project afhankelijk is van externe bibliotheken of specifieke systeemconfiguraties. -
Exporteren 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,pip freeze
vangt alleen Python-pakketten, niet systeemafhankelijkheden of de Python-interpreterversie. -
Conclusie
Gebruik Conda voor maximale herhaalbaarheid in wetenschappelijke, kruisplatform of complexere projecten. Gebruik Python virtuele omgevingen voor lichtgewicht, zuivere Python-projecten waar systeemafhankelijkheden geen probleem zijn.