Python venv Cheatsheet
några användbara venv-kommandon
Venv är ett verktyg för hantering av virtuella miljöer i kommandoraden. Det är mycket enklare jämfört med Anaconda. Här är några användbara venv-kommandon.

Bara för att du ska vara medveten om att det finns ett mycket bättre verktyg, enligt min mening, för hantering av paket och miljöer i Python än venv - uv. Titta här: uv - Ny Python Pakethanterare, Projekt- och Miljöhanterare
Python venv Cheat Sheet
Skapa en Virtuell Miljö
-
Standardkommando (Python 3.3+):
python -m venv venvDetta skapar en virtuell miljö med namnet
venvi din nuvarande katalog. -
Med en specifik Python-version (om installerad):
python3.10 -m venv venveller med
virtualenv:virtualenv -p /usr/local/bin/python3.10 venv(Kräver
virtualenvpaketet).
Aktivera den Virtuella Miljön
- På Windows:
.\venv\Scripts\activate - På macOS/Linux:
Shell-prompten bör nu visa miljöns namn.source venv/bin/activate
Avaktivera den Virtuella Miljön
- Alla plattformar:
Detta återför dig till din system-Python.deactivate
Installera Paket
- Med pip:
Exempel:pip installpip install numpy pandas - Uppgradera pip (rekommenderas):
python -m pip install --upgrade pip
Frisera och Exportera Krav
- Spara aktuella miljöpaket:
pip freeze > requirements.txt - Installera från kravfil:
Se till att din virtuella miljö är aktiverad innan du kör dessa kommandon.pip install -r requirements.txt
Ta bort en Virtuell Miljö
deactivate
rm -rf <env path>
Vanliga Fällor Vid Hantering av Python Virtuella Miljöer
Glömma att Aktivera den Virtuella Miljön
- En vanlig misstag är att köra kommandon utan att aktivera den avsedda virtuella miljön, vilket leder till paketinstallationer i den globala miljön eller i fel venv. Detta kan orsaka beroendekonflikter och oförutsägbart beteende.
Att inte Specifiera Paketversioner
- Användning av lösa versionsspecifikationer (som
>=istället för==) irequirements.txtunderminerar reproducerbarhet. Exakt versionsspecifikation säkerställer att alla som arbetar med projektet använder samma paketversioner, vilket förebygger oväntade problem vid distribution eller samarbete.
Blanda Globala och Virtuella Miljöer
- Av misstag installera paket globalt eller blanda globala och virtuella miljöer kan skapa konflikter, särskilt om olika projekt kräver oförenliga paketversioner. Se alltid till att du arbetar inom den korrekta miljön.
Inkludera Virtuella Miljöer i Versionshantering
- Att inkludera virtuella miljökataloger (t.ex.
venv/) i versionshantering gör repositoryn ohanterlig och är onödigt. Lägg alltid till venv-kataloger i.gitignoreför att hålla din repository ren.
Försumma att Skilja Utvecklings- och Produktionsberoenden
- Att inte skilja på utvecklings- och produktionsberoenden kan resultera i uppblåsta eller osäkra distributioner. Använd separata kravfiler eller konfigurationer för varje.
Brist på Dokumentation och Automatisering
- Att inte dokumentera miljöinställningssteg eller att misslyckas med att automatisera processen (med skript eller Makefiles) gör det svårare att ta in nya medarbetare och reproducera miljöer.
Att inte Regelmässigt Rensa Upp Gamla Miljöer
- Med tiden kan oanvända virtuella miljöer ansamlas, slösa med diskutrymme och skapa förvirring. Rensa regelbundet bort föråldrade venvs för att hålla arbetsytan ren.
Ignorera System-Python och Pakethanterares Gränser
- Att modifiera system-Python eller blanda systempakethanterare med pip kan störa systemverktyg och introducera svårdiagnostiserade problem. Använd alltid venvs för projektberoenden och undvik att påverka systemhanterade paket.
Sammanfattande Tabell
| Fälla | Påverkan |
|---|---|
| Glömma att aktivera venv | Installerar paket i fel miljö |
| Att inte specificera paketversioner | Oförutsägbara byggnader, svårreproducerbara buggar |
| Blanda globala och virtuella miljöer | Beroende/versionskonflikter |
| Inkludera venv-kataloger i versionshantering | Uppblåsta, oorganiserade repositoryer |
| Att inte skilja på utvecklings- och produktionsberoenden | Uppblåsta/osäkra produktionsmiljöer |
| Brist på dokumentation/automatisering | Svår påbyggnad, inkonsekventa inställningar |
| Att inte rensa upp gamla miljöer | Slöseri med diskutrymme, förvirring |
| Modifiera system-Python eller paket | Systeminstabilitet, trasiga verktyg |
Att följa bästa praxis - som alltid aktivera din venv, specificera beroenden, skilja miljöer och upprätthålla tydlig dokumentation - kan hjälpa dig att undvika dessa vanliga fällor.
Nyckelskillnader Mellan Conda och Virtuella Miljöer för Reproducerbarhet
| Egenskap | Conda Miljöer | Python Virtuella Miljöer (venv/virtualenv) |
|---|---|---|
| Omfattning av Hantering | Hanterar Python-paket och icke-Python beroenden (t.ex. systembibliotek, kompilatorer) | Hanterar endast Python-paket via pip |
| Python Versionskontroll | Kan specificera och installera vilken Python-version som helst per miljö | Använder den systeminstallerade Python-versionen |
| Plattformskonsistens | Mer konsekvent över olika OS (Windows, macOS, Linux) på grund av hantering av alla beroenden | Beror på systembibliotek, som kan skilja sig mellan OS |
| Paketkällor | Använder Conda-repository (förkompilerade binärer, vetenskaplig stack) | Använder PyPI (pip) för Python-paket |
| Reproducerbarhet | Högre för komplexa, vetenskapliga eller blandade språkprojekt; kan exportera hela miljön (conda env export) |
Bra för rena Python-projekt; kan sakna reproducerbarhet om systemberoenden är inblandade |
| Icke-Python Beroenden | Kan installera och hantera (t.ex. OpenBLAS, libpng) | Kan inte hantera; måste installeras separat |
| Miljöexport/import | conda env export / conda env create för full reproducerbarhet |
pip freeze > requirements.txt / pip install -r requirements.txt (endast Python-paket) |
| Prestanda | Snabbare och mer tillförlitlig för stora vetenskapliga paket (t.ex. numpy, pandas) | Kan kräva kompilering från källan, särskilt på Windows |
| Komplexitet | Lättare uppsättning och hanteringsöverhead | Lättviktig, enklare för grundläggande Python-projekt |
Sammanfattning av Nyckelpunkter
-
Conda miljöer är idealiska för reproducerbarhet i projekt som kräver både Python- och icke-Python beroenden, eller när exakt replikering över plattformar är kritisk. Conda hanterar hela stacken - inklusive Python själv, bibliotek och till och med kompilatorer - vilket gör det enklare att dela och reproducera komplexa miljöer, särskilt inom datavetenskap och forskning.
-
Python virtuella miljöer (
venv/virtualenv) är lättviktiga och utmärkta för att isolera Python-beroenden i rena Python-projekt. De hanterar dock inte systemnivå- eller icke-Python beroenden, så reproducerbarheten kan komprometteras om ditt projekt beror på externa bibliotek eller specifika systemkonfigurationer. -
Exportering och delning av miljöer: Conda låter dig exportera en fullständig miljöspecifikation (
conda env export), inklusive alla beroenden och deras versioner, som kan återskapas exakt någon annanstans. Med virtuella miljöer fångarpip freezeendast Python-paket, inte systemberoenden eller Python-interpreterversionen. -
Slutsats Använd Conda för maximal reproducerbarhet i vetenskapliga, plattformsoberoende eller komplexa projekt. Använd Python virtuella miljöer för lättviktiga, rena Python-projekt där systemberoenden inte är ett problem.