Kom igång med Virtuella Miljöer i Python
Denna artikel guidar dig genom processen att skapa och hantera virtuella miljöer i Python, oavsett om du använder Windows eller Linux.
När du jonglerar med flera projekt i din lokala utvecklingsmiljö, är det vanligt att stöta på utmaningar relaterade till beroenden. Genom att skapa separata virtuella miljöer för varje projekt kan du effektivisera hanteringen av dessa beroenden och säkerställa att alla projekt har de specifika krav de behöver.
Låt oss utforska hur man skapar och aktiverar dessa kraftfulla verktyg för en smidigare utvecklingsupplevelse! 👩🏽💻
Vad är Virtuella Miljöer?
Virtuella miljöer fungerar som isolerade utrymmen, där varje projekt har sina egna specifika koder och beroenden. Det betyder att projektets miljö är avskärmad från resten av systemet, och från andra projekt.
Men varför är det så viktigt med virtuella miljöer?
Jo, med virtuella miljöer kan du installera och använda olika versioner av samma bibliotek för olika projekt, utan att det uppstår konflikter. Detta är särskilt viktigt för att undvika problem som kan uppstå om olika projekt behöver olika versioner av samma paket. Låt oss dyka djupare in i varför detta är så fördelaktigt.
Installation av Paket i Python
Python kommer som standard med ett omfattande bibliotek av moduler för olika uppgifter, från enhetstestning till interaktion med operativsystemet och datumhantering.
Men ofta behöver du använda andra paket, skapade av Python-communityn, särskilt om du sysslar med webbskrapning, maskininlärning eller webbapplikationsutveckling.
För att hantera dessa paket kan du använda verktyg som `conda` eller `pip`.
Varje projekt har sin unika uppsättning beroenden. Om du installerar alla dessa paket direkt i din lokala utvecklingsmiljö kommer alla dina projekt att dela samma globalt installerade paket.
Varför är det ett problem?
Tänk dig att du har ett stort antal paket installerade i din utvecklingsmiljö, men ett visst projekt behöver bara några få av dem. Eftersom alla projekt delar samma installationer blir det svårt att hålla reda på vilka paket som hör till vilket projekt. Detta kan snabbt bli rörigt och ineffektivt.
Ett annat problem uppstår när du har ett projekt som använder en äldre version av ett bibliotek, till exempel Django 2.2, och sedan börjar arbeta med ett nytt projekt som kräver Django 4. Om du installerar Django 4 direkt i din utvecklingsmiljö, kommer det att ersätta den äldre versionen.
Vad händer då med den befintliga installationen?
Den gamla versionen av Django tas bort, och ditt tidigare projekt, som var beroende av Django 2.2, kan sluta fungera som förväntat eftersom den äldre versionen inte längre finns. Det är viktigt att notera att nyare versioner av bibliotek ofta innehåller förändringar, vilket kan leda till inkompatibilitet med äldre projekt.
Sammanfattningsvis kan beroendehantering bli komplicerad om alla projekt använder samma gemensamma miljö. Varje projekt behöver sin egen uppsättning bibliotek för att fungera korrekt.
Hur Virtuella Miljöer Fungerar
Vi har nu sett utmaningarna med att installera paket i en gemensam utvecklingsmiljö. Låt oss nu se hur virtuella miljöer löser detta.
Genom att skapa och aktivera en virtuell miljö för varje Python-projekt säkerställer du att varje projekt bara har tillgång till de paket som det faktiskt behöver.
Med virtuella miljöer kan du alltså köra både ett Django 2.2-projekt och ett Django 4-projekt samtidigt utan några konflikter. Det beror på att installationerna av Django är begränsade till sina respektive virtuella miljöer och inte är globala för hela systemet.
Kort sagt, virtuella miljöer är isolerade miljöer som rymmer både koden och beroenden för ett enskilt projekt.
Fördelar med Virtuella Miljöer
Nu när du har förstått hur virtuella miljöer fungerar, låt oss sammanfatta fördelarna:
- Virtuella miljöer skapar isolerade utvecklingsmiljöer, vilket gör det möjligt att installera precis de paket som ett projekt behöver.
- Eftersom virtuella miljöer är oberoende, kan olika projekt använda olika versioner av samma bibliotek utan konflikter. Dessutom slipper du krångla med systembehörigheter när du installerar bibliotek.
- När du har installerat paket i en virtuell miljö, kan du spara projektets beroenden i en `requirements.txt`-fil. Det gör det möjligt för andra utvecklare att enkelt återskapa projektets miljö och installera de nödvändiga paketen med ett enda kommando.
Nu vet du hur virtuella miljöer fungerar och deras fördelar. Låt oss utforska några populära verktyg för att skapa och hantera virtuella miljöer i Python.
#1. Virtualenv
Virtualenv är ett välkänt verktyg för att skapa och hantera virtuella miljöer. En del av funktionaliteten i Virtualenv finns även i `venv`-paketet, men Virtualenv är snabbare och mer flexibelt.
#2. Pipenv
Pipenv kombinerar virtuell miljöhantering från Virtualenv med pakethantering från Pip. Det använder Pipfile för att hantera projektberoenden inuti en virtuell miljö.
Du kan testa Pipenv direkt i webbläsaren på denna Pipenv-lekplats.
#3. Conda
Om du använder Anaconda-distributionen av Python kan du använda Conda för pakethantering och för att skapa virtuella miljöer.
Läs mer i den här omfattande guiden om hur du hanterar miljöer med Conda.
#4. Poetry
Poetry är ett pakethanteringsverktyg som låter dig hantera beroenden för alla dina Python-projekt. För att använda Poetry behöver du Python 3.7 eller senare.
#5. Venv
Som nämnts tidigare erbjuder `venv` en del av Virtualenvs funktionalitet, men den stora fördelen är att den ingår i Pythons standardbibliotek från och med Python 3.3.
Det är enkelt att använda och kräver ingen installation av extra paket. Vi kommer att använda `venv` i denna guide för att skapa och hantera virtuella miljöer. ✅
Skapa en Virtuell Miljö i Ubuntu
💬 För att följa resten av denna guide, se till att du har Python 3 installerat lokalt. Du bör ha Python 3.5 eller senare.
Detta avsnitt beskriver hur man skapar och aktiverar virtuella miljöer i Ubuntu Linux. Samma steg fungerar även i andra Linux-distributioner.
För att underlätta hanteringen, låt oss skapa en projektkatalog och navigera in i den. Vi kommer att skapa `venv` inuti den katalogen.
$ mkdir my_project $ cd my_project
Den grundläggande syntaxen för att skapa en virtuell miljö för ditt Python-projekt är `python3 -m venv
$ python3 -m venv my_env
Hur man Aktiverar och Installer Paket i en Virtuell Miljö
När den virtuella miljön är skapad, kan du aktivera den och installera de paket du behöver. För att aktivera den virtuella miljön, kör följande kommando:
$ source my_env/bin/activate
När den virtuella miljön är aktiverad kan du köra kommandot `pip list` för att se de installerade paketen:
$ pip list
Eftersom vi inte har installerat några paket än, ser du `pip` och `setuptools` som är standard i varje skapad virtuell miljö.
Med `pip` kan du installera paket som behövs för det specifika projektet, vilket säkerställer att varje projekt har sin egna oberoende utvecklingsmiljö.
Nu när den virtuella miljön är aktiverad kan du installera projektspecifika paket. Låt oss installera `requests`, ett populärt Python-paket som gör det enkelt att skicka HTTP-förfrågningar för att arbeta med webb-API:er.
$ pip install requests
När du installerar `requests`, ser du att alla beroende paket också installeras automatiskt.
$ pip list
Du kan använda `pip freeze` och spara utmatningen till en `requirements.txt`-fil så här:
$ pip freeze > requirements.txt
Om du tittar på innehållet i den aktuella projektmappen ser du att `requirements.txt`-filen har skapats:
$ ls # my_env requirements.txt
Du kan inaktivera den virtuella miljön efter att ha jobbat med projektet genom att köra följande kommando:
$ deactivate
Skapa en Virtuell Miljö i Windows
Även om en Linux-miljö ofta är att föredra för utveckling, kan du även använda Windows. Du kan överväga att använda Windows Subsystem for Linux (WSL) för att skapa en Ubuntu-terminalmiljö för lokal utveckling.
Om du använder en Windows-dator kan du använda antingen Windows PowerShell eller kommandotolken för att skapa virtuella miljöer med följande kommando:
> python -m venv <sökväg-till-venv>
Hur man Aktiverar en Virtuell Miljö
Aktiveringen av virtuella miljöer i Windows skiljer sig beroende på om du använder kommandotolken eller Windows PowerShell.
Om du använder kommandotolken, kör följande kommando för att aktivera den virtuella miljön:
> <sökväg-till-venv>Scriptsactivate.bat
Om du använder Windows PowerShell, använd istället detta kommando:
> <sökväg-till-venv>ScriptsActivate.ps1
När den virtuella miljön är aktiverad, kan du installera de paket som projektet behöver.
För att inaktivera den virtuella miljön, använd kommandot `deactivate` i både kommandotolken och Windows PowerShell.
Sammanfattning
I denna artikel har vi undersökt begränsningarna med systemomfattande installationer av paket och hur de försvårar beroendehantering i Python-projekt. Virtuella miljöer i Python ger en lösning genom att skapa isolerade utvecklingsmiljöer för varje projekt, vilket gör beroendehanteringen mycket smidigare.
Vi har gått igenom hur man använder `venv`, som är inbyggt i Pythons standardbibliotek, för att skapa och aktivera virtuella miljöer. Vi har också berört några andra populära verktyg.
Inuti ett projekts dedikerade virtuella miljö kan specifika versioner av bibliotek installeras, och dessa beroenden kan sparas i en `requirements.txt`-fil för att göra det enkelt för andra utvecklare att återskapa projektets miljö.
När du påbörjar ditt nästa Python-projekt, kom ihåg att använda virtuella miljöer för att få en bättre upplevelse. Lycka till med kodandet! 🎉