Programmering

Virtualenv og venv: Python virtuelle miljøer forklart

Av alle grunnene til at Python er en hit hos utviklere, er en av de største dens brede og stadig utvidende utvalg av tredjepartspakker. Praktiske verktøysett for alt fra inntak og formatering av data til høyhastighets matematikk og maskinlæring er bare en import eller pip install borte.

Men hva skjer når disse pakkene ikke leker bra med hverandre? Hva gjør du når forskjellige Python-prosjekter trenger konkurrerende eller inkompatible versjoner av de samme tilleggene? Det er her Python virtuelle miljøer spiller inn.

Du kan opprette og jobbe med virtuelle miljøer i både Python 2 og Python 3, selv om verktøyene er forskjellige. Virtualenv er det valgte verktøyet for Python 2, mens venv håndterer oppgaven i Python 3.

Hva er virtuelle Python-miljøer?

Et virtuelt miljø er en måte å ha flere parallelle forekomster av Python-tolk, hver med forskjellige pakkesett og forskjellige konfigurasjoner. Hvert virtuelle miljø inneholder en diskret kopi av Python-tolken, inkludert kopier av støtteverktøyene.

Pakkene installert i hvert virtuelle miljø sees bare i det virtuelle miljøet og ingen andre. Selv store, komplekse pakker med plattformavhengige binærfiler kan korrigeres fra hverandre i virtuelle miljøer.

Det er noen få vanlige bruksområder for et virtuelt miljø:

  1. Du utvikler flere prosjekter som er avhengige av forskjellige versjoner av de samme pakkene, eller du har et prosjekt som må isoleres fra bestemte pakker på grunn av en kollisjon i navneområdet. Dette er den mest vanlige brukssaken.
  2. Du jobber i et Python-miljø der du ikke kan endre katalogen for nettstedspakker. Dette kan være fordi du jobber i et høyt kontrollert miljø, for eksempel administrert hosting, eller på en server der valg av tolk (eller pakker som brukes i den) ikke kan endres på grunn av produksjonskrav.
  3. Du vil eksperimentere med en spesifikk kombinasjon av pakker under sterkt kontrollerte forhold, for eksempel for å teste krysskompatibilitet eller bakoverkompatibilitet.
  4. Du vil kjøre en "baseline" -versjon av Python-tolk på et system uten tredjepartspakker, og bare installere tredjepartspakker for hvert enkelt prosjekt etter behov.

Ingenting sier at du ikke bare kan pakke ut et Python-bibliotek i en undermappe til et prosjekt og bruke det på den måten. På samme måte kan du laste ned en frittstående kopi av Python-tolken, pakke den ut i en mappe og bruke den til å kjøre skript og pakker viet til den.

Men det blir snart vanskelig å administrere slike brosteinsbelagte prosjekter. Det bare virker lettere å gjøre det først. Å jobbe med pakker som har binære komponenter, eller som er avhengige av omfattende tredjepartsavhengigheter, kan være et mareritt. Den beste langsiktige løsningen er å bruke Pythons opprinnelige mekanismer for å skape og jobbe med virtuelle miljøer.

Virtuelle miljøer i Python 3

Virtualenv har vist seg uunnværlig for utallige Python-utviklere, men det er ikke en del av Pythons standardbibliotek. Python 3 har innebygd verktøy for virtuelle miljøer som gjør hele prosessen ganske enkel.

Relatert video: Hvordan Python gjør programmeringen enklere

Perfekt for IT, forenkler Python mange typer arbeid, fra systemautomatisering til arbeid i banebrytende felt som maskinlæring.

Lag det virtuelle miljøet

For å opprette et virtuelt miljø i en gitt katalog, skriv inn:

python3 -m venv / path / to / katalog

(Merk at du bare kan brukepython i stedet for python3 hvis systemet gjenkjenner python som standard Python 3-tolk.)

Hele prosessen med å konfigurere det virtuelle miljøet kan ta et minutt eller to. Når den er ferdig, bør du ha en katalog med noen underkataloger. Den viktigste underkatalogen ersøppel på Unix ellerSkript på Windows, hvor du finner kopien av Python-tolk for det virtuelle miljøet sammen med verktøyene.

Merk at fordi hvert virtuelle miljø inneholder sin egen kopi av Python-tolk, kan det være ganske stort. På både Windows og Linux vil et virtuelt miljø fra Python 3.6 forbruke omtrent 23 MB diskplass.

Aktiver det virtuelle miljøet

Før du kan bruke dette virtuelle miljøet, må du eksplisitt aktivere den. Aktivering gjør det virtuelle miljøet til standard Python-tolk i løpet av økten.

Du må bruke annen syntaks for å aktivere det virtuelle miljøet, avhengig av hvilket operativsystem og kommandoskall du bruker.

  • På Unix eller MacOS, ved hjelp av bash shell: kilde / bane / til / venv / bin / aktivere
  • På Unix eller MacOS, ved hjelp av csh-skallet: kilde /path/to/venv/bin/activate.csh
  • På Unix eller MacOS bruker du fiskeskallet: kilde /path/to/venv/bin/activate.fish
  • På Windows ved hjelp av ledeteksten:sti \ til \ venv \ Skript \ aktivere.bat
  • På Windows ved hjelp av PowerShell: sti \ til \ venv \ Scripts \ Activate.ps1

Merk at det aktiverte miljøet fungerer bare for konteksten den ble aktivert i. For eksempel, hvis du starter to forekomster av PowerShell, A og B, og du bare aktiverer det virtuelle miljøet i eksempel A, vil dette miljøet bare gjelde A. Det vil ikke gjelde noe annet sted.

Konfigurer og bruk det virtuelle miljøet

Når du har aktivert det nye virtuelle miljøet, kan du bruke pip-pakkebehandling til å legge til og endre pakker for det. Du finner pip i Skript underkatalog for det virtuelle miljøet på Windows og i søppel underkatalog på Unix OSer.

Hvis du allerede er kjent med måten pip fungerer på, er du klar. Det skal være akkurat det samme i et virtuelt miljø. Bare vær sikker på at du bruker forekomsten av pip som administrerer pakker for det virtuelle miljøet i konteksten der den ble aktivert, for eksempel bash-økten eller Windows CLI / PowerShell-økten. Hvis du vil bekrefte at du bruker riktig pip og riktig virtuelt miljø, skriver du inn pip -V og sjekk at banen den viser peker til en underkatalog for det virtuelle miljøet.

For å bruke det virtuelle miljøet du opprettet for å kjøre Python-skript, kan du bare påkalle Python fra kommandolinjen i konteksten der du aktiverte den.

Deaktivering av det virtuelle miljøet

Når du er ferdig med å bruke det virtuelle miljøet, kan du bare avslutte økten der du brukte den. Hvis du vil fortsette å jobbe i miljøet, men med standard Python-tolk i stedet, skriver du deaktivere på forespørsel. Windows-brukere på ledeteksten må kjøre deaktivere.bat fra Skript underkatalog, men Unix-brukere og Windows-brukere som kjører PowerShell kan ganske enkelt skrive deaktivere i hvilken som helst katalog.

Fjerner det virtuelle miljøet

Virtuelle miljøer er selvstendige. Når du ikke lenger trenger det virtuelle miljøet, kan du bare slette katalogen.

Virtuelle miljøer i Python 2

Med Python 2 er ikke virtuelle miljøer en innfødt funksjon i språket. I stedet må du installere tredjepartsbiblioteker for å opprette og administrere virtuelle miljøer.

Det mest populære og mest brukte av disse prosjektene er virtualenv, som håndterer å lage katalogstrukturen og kopiere de nødvendige filene til et virtuelt miljø. For å installere virtualenv, bruk bare pip installer virtualenv. For å lage en virtuell miljøkatalog med den, skriv inn virtualenv / path / to / katalog. Aktivering og deaktivering av det virtuelle miljøet fungerer på samme måte som for virtuelle miljøer i Python 3 (se ovenfor).

Bruker virtuelle miljøer med Jupyter-notatbøker

Hvis du bruker Jupyter-notatblokker (også kalt IPython-notatbøker), og du allerede har Jupyter installert hele systemet, kan du opprette det virtuelle miljøet og aktivere det. Kjør deretter fra katalogen for virtuelle omgivelser pip installer ipykernel for å legge til de nødvendige komponentene for IPython. Til slutt, løp installasjon av ipython-kjernen —bruker —navn =, der prosjektnavn er et navn du vil knytte til det aktuelle prosjektet. Derfra skal du kunne starte Jupyter og bytte til IPython-kjernen du installerte i det virtuelle miljøet.

$config[zx-auto] not found$config[zx-overlay] not found