Pytonorm

Hur man skapar och hanterar virtuella Python-miljöer

Hur man skapar och hanterar virtuella Python-miljöer
Det är ganska vanligt att se Python-utvecklare installera och uppgradera paket från standardkällor och icke-standardkällor för att utveckla applikationer. Anledningarna kan variera från att använda en nyare version av en modul till att använda en specifik version om det finns en regression.

Dessa krav och användningsfall kan vara svårt att hantera när olika applikationer kräver olika versioner av samma bibliotek. Tack och lov ger Python en robust lösning för att isolera utvecklingsmiljöer med virtuella miljöer.

Vad är en Python Virtual Environment?

En virtuell Python-miljö är ett fristående katalogträd som innehåller en specifik Python-installation tillsammans med alla dess standardbibliotek. Applikationer som kräver en viss version av biblioteket kan isoleras i dessa virtuella miljöer utan att systemet eller andra Python-implementeringar förorenas. Varje virtuell miljö är en separat sandlåda, så du kan skapa så många som virtuella miljöer du vill ha.

Skapa och hantera virtuella miljöer

För att skapa virtuella miljöer i Ubuntu, installera först nödvändigt beroendepaket genom att köra kommando:

$ sudo apt installera python3-venv

Du kan nu skapa virtuella miljöer genom att köra kommando:

$ python3 -m venv myenv

Genom att köra kommandot ovan skapas en virtuell miljö som heter “myenv” i din hemkatalog. Om du vill använda någon annan version av Python kan du ersätta "python3" ovan med fullständig sökväg till platsen för din alternativa Python-binär.

För att aktivera den anpassade miljön som skapats ovan, kör kommandot:

$ källa myenv / bin / aktivera

När den virtuella miljön är aktiverad ändras shellprompten för att återspegla den aktuella virtuella miljön du använder. Om du kör “sys.path ”-kommandot inuti Python-tolk, kan du se att den virtuella miljön fungerar som den ska. Python letar nu efter paket i den anpassade miljö som du just har skapat.

Om din shell-prompt inte visar namnet på den virtuella miljön som prefix, använder alla Python-filer du kör system Python istället. Så det är nödvändigt att källa till virtuell miljö innan du kör en fil i din anpassade miljö.

Du kan inaktivera en virtuell miljö genom att köra kommando:

$ inaktivera

Varje Python-virtuell miljö innehåller en “pyvenv.cfg-fil med en "include-system-site-packages" -nyckel som är inställd på "falsk" som standard. Den här nyckeln berättar för den virtuella miljön om systemplaceringspaket ska användas eller inte. Om den är inställd på "sann" kommer Python i den virtuella miljön att undersöka systempaket om ett paket inte hittas i den virtuella miljön. Det gör också alla systeminstallerade paket importerbara i den virtuella miljön.

För att radera en virtuell miljö behöver du bara ta bort katalogen för virtuell miljö så är den borta.

Det är möjligt att skapa och lagra virtualenv på externa USB-enheter. Du måste ha en USB-enhet formaterad i filsystemet NTFS eller EXT. FAT32-filsystemet stöder inte symlänkar vilket är ett krav för att virtuella miljöer ska fungera.

Använda Pip Package Manager för att installera paket i den virtuella miljön

Inuti en virtuell miljö kan du använda pip-pakethanteraren för att installera, uppgradera och avinstallera paket. Det är möjligt att nedgradera eller uppgradera ett paket genom att ange ett visst versionsnummer.

Du kan installera ett paket med pip genom att köra kommandot (ersätt pygame med önskat paketnamn):

$ pip installera pygame

Ett sökbart arkiv med pip-paket hittar du här.

För att avinstallera ett paket, använd kommandot:

$ pip avinstallera pygame

För att se alla versioner av ett paket, kör kommandot:

$ pip installera pygame ==

För att nedgradera eller uppgradera till en specifik version, använd kommandot (ersätt “1.9.5 ”med önskat versionsnummer):

$ pip installera pygame == 1.9.5

För att uppgradera ett paket till den senaste versionen, kör kommandot:

$ pip install - uppgradera pygame

För att se alla paket installerade i virtuell miljö, kör kommandot:

$ pip-lista

För att spara en lista över installerade paket i virtualenv, kör kommandot:

$ pip frysning> krav.Text

Du kan använda ovanstående krav.txt ”-fil för att installera paket i bulk. Ett användningsfall är att duplicera en befintlig miljö genom att installera alla paket från grunden. För att installera pip-paket i bulk, kör kommandot:

$ pip install -r krav.Text

Använda Pythons virtuella miljöer med icke-Python-applikationer

Applikationer skrivna på andra programmeringsspråk kan sandlådas i virtuella Python-miljöer så länge som pip eller någon annan Python-pakethanterare tillhandahåller binärfiler och paket för dessa alternativa programmeringsspråk / ramar.

Här är ett litet exempel som förklarar installationen av Node.js i virtuell Python-miljö. Kör följande kommandon en efter en:

$ python3 -m venv my_node_env
$ källa my_node_env / bin / aktivera
$ pip installera hjul
$ pip installera nodenv
$ nodeenv -p
$ nodeenv --version
$ node --version

När du är klar kommer du att ha en helt isolerad nod.js miljö. Du kan skapa så många virtuella miljöer som du vill för olika noder.js applikationer. Paket installerade via npm-pakethanteraren begränsas endast till aktiverad virtuell miljö.

Slutsats

Att skapa en virtuell Python-miljö är ett utmärkt sätt att behålla utvecklingsmiljöer. Varje virtuell miljö har sin egen Python-binär och sin egen oberoende uppsättning paket. Att utveckla flera Python-applikationer på samma system kan snabbt förorena din hem- och rotkatalog och virtuella miljöer gör det så enkelt att underhålla dem.

Shadow of the Tomb Raider for Linux Tutorial
Shadow of the Tomb Raider är det tolfte tillskottet till Tomb Raider-serien - en action-äventyrsspelfranchise skapad av Eidos Montreal. Spelet mottogs...
Hur man förbättrar FPS i Linux?
FPS står för Bildrutor per sekund. FPS: s uppgift är att mäta bildfrekvensen i videouppspelningar eller spelprestanda. Med enkla ord betecknas antalet...
De bästa Oculus App Lab-spelen
Om du är Oculus-headsetägare måste du vara förtjust i sidoladdning. Sideladdning är processen för att installera icke-butiksinnehåll på ditt headset. ...