Programmering

Virtualenv og venv: Python virtuelle miljøer forklaret

Af alle grundene til, at Python er et hit hos udviklere, er en af ​​de største dens brede og stadigt voksende udvalg af tredjepartspakker. Praktiske værktøjssæt til alt fra indtagelse og formatering af data til højhastigheds matematik og maskinindlæring er bare en importere eller pip-installation væk.

Men hvad sker der, når disse pakker ikke spiller godt sammen? Hvad gør du, når forskellige Python-projekter har brug for konkurrerende eller inkompatible versioner af de samme tilføjelser? Det er her, virtuelle Python-miljøer spiller ind.

Du kan oprette og arbejde med virtuelle miljøer i både Python 2 og Python 3, selvom værktøjerne er forskellige. Virtualenv er det valgte værktøj til Python 2, mens venv håndterer opgaven i Python 3.

Hvad er virtuelle Python-miljøer?

Et virtuelt miljø er en måde at have flere, parallelle forekomster af Python-tolken, hver med forskellige pakkesæt og forskellige konfigurationer. Hvert virtuelt miljø indeholder en diskret kopi af Python-tolken, inklusive kopier af dens supportværktøjer.

Pakkerne installeret i hvert virtuelt miljø ses kun i det virtuelle miljø og ingen andre. Selv store, komplekse pakker med platformafhængige binære filer kan korrigeres fra hinanden i virtuelle miljøer.

Der er et par almindelige brugssager til et virtuelt miljø:

  1. Du udvikler flere projekter, der er afhængige af forskellige versioner af de samme pakker, eller du har et projekt, der skal isoleres fra bestemte pakker på grund af en kollision med navneområdet. Dette er den mest almindelige brugssag.
  2. Du arbejder i et Python-miljø, hvor du ikke kan ændre biblioteket til pakkerejser. Dette kan skyldes, at du arbejder i et stærkt kontrolleret miljø, såsom administreret hosting, eller på en server, hvor valget af tolk (eller pakker, der bruges i den) ikke kan ændres på grund af produktionskrav.
  3. Du vil eksperimentere med en specifik kombination af pakker under stærkt kontrollerede omstændigheder, for eksempel for at teste krydskompatibilitet eller bagudkompatibilitet.
  4. Du vil køre en "baseline" -version af Python-tolk på et system uden tredjepartspakker og kun installere tredjepartspakker til hvert enkelt projekt efter behov.

Intet siger, at du ikke bare kan pakke et Python-bibliotek ud i en undermappe til et projekt og bruge det på den måde. På samme måde kan du downloade en enkeltstående kopi af Python-tolken, pakke den ud i en mappe og bruge den til at køre scripts og pakker, der er afsat til den.

Men det bliver hurtigt vanskeligt at styre sådanne brostensbelagte projekter. Kun det ser ud til lettere at gøre det i starten. At arbejde med pakker, der har binære komponenter, eller som er afhængige af udførlige tredjepartsafhængigheder, kan være et mareridt. Den bedste langsigtede løsning er at bruge Pythons oprindelige mekanismer til at skabe og arbejde med virtuelle miljøer.

Virtuelle miljøer i Python 3

Virtualenv har vist sig uundværligt for utallige Python-udviklere, men det er ikke en del af Pythons standardbibliotek. Python 3 har indbygget værktøj til virtuelle miljøer, der gør hele processen ret enkel.

Relateret video: Hvordan Python gør programmeringen nemmere

Python er perfekt til IT og forenkler mange slags arbejde, lige fra systemautomatisering til arbejde inden for banebrydende felter som maskinindlæring.

Opret det virtuelle miljø

For at oprette et virtuelt miljø i et givet bibliotek skal du skrive:

python3 -m venv / sti / til / bibliotek

(Bemærk, at du bare kan brugepython i stedet for python3 hvis dit system genkender python som standard Python 3-tolk.)

Hele processen med opsætning af det virtuelle miljø kan tage et minut eller to. Når det er færdigt, skal du have et bibliotek med et par underkataloger i det. Den vigtigste underkatalog erbeholder på Unix ellerScripts på Windows, hvor du finder kopien af ​​Python-tolk til det virtuelle miljø sammen med dets hjælpeprogrammer.

Bemærk, at fordi hvert virtuelle miljø indeholder sin egen kopi af Python-tolk, kan det være ret stort. På både Windows og Linux vil et virtuelt Python 3.6-miljø forbruge cirka 23 MB diskplads.

Aktivér det virtuelle miljø

Inden du kan bruge dette virtuelle miljø, skal du udtrykkeligt aktivere det. Aktivering gør det virtuelle miljø til standard Python-tolk i løbet af sessionen.

Du bliver nødt til at bruge forskellige syntakser til at aktivere det virtuelle miljø afhængigt af hvilket operativsystem og kommandoskal du bruger.

  • På Unix eller MacOS ved hjælp af bash shell: kilde / sti / til / venv / bin / aktivere
  • På Unix eller MacOS ved hjælp af csh shell: kilde /path/to/venv/bin/activate.csh
  • På Unix eller MacOS ved hjælp af fiskeskallen: kilde /path/to/venv/bin/activate.fish
  • På Windows ved hjælp af kommandoprompten:sti \ til \ venv \ Scripts \ aktivere.bat
  • På Windows ved hjælp af PowerShell: sti \ til \ venv \ Scripts \ Activate.ps1

Bemærk, at det aktiverede miljø fungerer kun i den sammenhæng, den blev aktiveret i. For eksempel, hvis du starter to forekomster af PowerShell, A og B, og du kun aktiverer det virtuelle miljø i eksempel A, gælder dette miljø kun for A. Det gælder ikke andre steder.

Konfigurer og brug det virtuelle miljø

Når du har aktiveret det nye virtuelle miljø, kan du bruge pip-pakkehåndtering til at tilføje og ændre pakker til det. Du finder pip i Scripts undermappe til det virtuelle miljø på Windows og i beholder underkatalog på Unix OSer.

Hvis du allerede er fortrolig med den måde, pip fungerer på, er du klar. Det skal være det samme i et virtuelt miljø. Bare sørg for at bruge instansen af ​​pip, der administrerer pakker til det virtuelle miljø i den sammenhæng, hvor den blev aktiveret - f.eks. Bash-sessionen eller Windows CLI / PowerShell-sessionen. Hvis du vil bekræfte, at du bruger den rigtige pip og det rigtige virtuelle miljø, skal du skrive pip -V og kontroller at stien, den viser, peger på en underkatalog til dit virtuelle miljø.

For at bruge det virtuelle miljø, du oprettede til at køre Python-scripts, skal du blot påkalde Python fra kommandolinjen i den sammenhæng, hvor du aktiverede det.

Deaktivering af det virtuelle miljø

Når du er færdig med at bruge det virtuelle miljø, kan du bare afslutte den session, hvor du brugte den. Hvis du vil fortsætte med at arbejde i miljøet, men med standard Python-tolk i stedet, skal du skrive deaktiver ved prompten. Windows-brugere på kommandoprompten skal køre deaktiver.bat fra Scripts underkatalog, men Unix-brugere og Windows-brugere, der kører PowerShell, kan bare skrive deaktiver i ethvert bibliotek.

Fjernelse af det virtuelle miljø

Virtuelle miljøer er selvstændige. Når du ikke længere har brug for det virtuelle miljø, kan du bare slette dets mappe.

Virtuelle miljøer i Python 2

Med Python 2 er virtuelle miljøer ikke et indbygget element i sproget. I stedet skal du installere tredjepartsbiblioteker for at oprette og administrere virtuelle miljøer.

Det mest populære og mest anvendte af disse projekter er virtualenv, som håndterer oprettelse af katalogstrukturen og kopiering af de nødvendige filer til et virtuelt miljø. For at installere virtualenv skal du bare bruge pip installer virtualenv. For at oprette et virtuelt miljøkatalog med det skal du skrive virtualenv / sti / til / bibliotek. Aktivering og deaktivering af det virtuelle miljø fungerer på samme måde som for virtuelle miljøer i Python 3 (se ovenfor).

Brug af virtuelle miljøer med Jupyter-notesbøger

Hvis du bruger Jupyter-notesbøger (også kaldet IPython-notesbøger), og du allerede har Jupyter installeret i hele systemet, skal du oprette dit virtuelle miljø og aktivere det. Kør derefter fra din virtuelle miljøkatalog pip installere ipykernel for at tilføje de nødvendige komponenter til IPython. Endelig løb ipython-kerneinstallation —bruger —navn =, hvor projektnavn er et navn, du vil knytte til det pågældende projekt. Derfra skal du være i stand til at starte Jupyter og skifte til den IPython-kerne, du installerede i det virtuelle miljø.