Denne artikkelen gir deg en innføring i hvordan du setter opp og bruker virtuelle miljøer i Python, både på Windows og Linux.
Når du jobber med flere prosjekter lokalt, vil du ofte oppleve at de krever forskjellige versjoner av samme pakke. Ved å bruke virtuelle miljøer for hvert prosjekt, kan du håndtere disse avhengighetene på en mye mer organisert måte.
La oss utforske hvordan vi kan opprette og aktivere virtuelle miljøer, slik at du kan dra nytte av fordelene de gir. 👩🏽💻
Hva er virtuelle miljøer?
Virtuelle miljøer er isolerte områder som inneholder all koden og alle avhengighetene som et prosjekt trenger.
Men hvorfor er det egentlig viktig å bruke virtuelle miljøer?
Jo, de tillater deg å installere og bruke ulike versjoner av de samme bibliotekene for forskjellige prosjekter. Dette sikrer at det ikke oppstår konflikter når flere prosjekter bruker forskjellige versjoner. La oss se litt nærmere på dette.
Installere pakker i Python
Pythons standardbibliotek kommer med mange nyttige moduler, for eksempel for enhetstesting, samhandling med operativsystemet, og håndtering av datoer og klokkeslett.
Likevel, i mange Python-prosjekter vil du trenge å installere andre pakker som er utviklet av Python-fellesskapet. Dette gjelder spesielt i situasjoner som web-skraping for datafangst, maskinlæring og webapplikasjoner.
For å installere og organisere disse pakkene, kan du bruke verktøy som conda eller pip.
Hvert prosjekt krever et spesifikt sett av pakker. Om du installerer alle disse pakkene globalt på maskinen din, vil alle prosjektene dele de samme pakkene.
Hvorfor kan dette være problematisk?
Tenk deg at du har mange pakker installert på utviklingsmiljøet ditt. Kanskje prosjektet du jobber med for øyeblikket bare trenger tre av disse. Om alle prosjektene deler de samme installasjonene, blir det vanskelig å finne ut hvilke prosjekter som faktisk trenger hvilke pakker. Med andre ord, det blir vanskelig å holde styr på prosjektenes avhengigheter.
Det er også en annen utfordring. Si at du har et prosjekt som bruker Django 2.2. Senere bestemmer du deg for å starte et nytt prosjekt som krever Django 4. Hvis du da installerer Django 4 i samme utviklingsmiljø, vil dette endre den eksisterende installasjonen av Django.
Hva skjer med den gamle installasjonen?
Den gamle installasjonen blir fjernet og erstattet med den nye versjonen. Dette kan føre til at eldre prosjekter ikke lenger fungerer som de skal, da noen funksjoner kan ha blitt utdatert.
Oppsummert: det blir vanskelig å håndtere avhengigheter når alle pakker er installert i et felles miljø, fordi prosjektene krever sine egne biblioteker for å fungere.
Hvordan fungerer virtuelle miljøer?
Vi har nå sett på utfordringene med å installere pakker globalt. Dette gir oss et godt utgangspunkt for å forstå hvordan virtuelle miljøer løser dette problemet.
Når du oppretter og aktiverer et virtuelt miljø for prosjektene dine, vil du kun installere de pakkene som er nødvendige for det aktuelle prosjektet.
Om vi går tilbake til eksemplet med Django-prosjektene, kan du nå, med virtuelle miljøer, kjøre både Django 2.2- og Django 4-prosjektene uten konflikt. Dette er fordi Django-installasjonene ikke lenger er globale, men er begrenset til de virtuelle miljøene som hører til hvert prosjekt.
I bunn og grunn er virtuelle miljøer isolerte miljøer som inneholder all koden og alle avhengighetene for et prosjekt.
Fordeler med virtuelle miljøer
Nå som du forstår hvordan virtuelle miljøer fungerer, la oss oppsummere fordelene ved å bruke dem:
- Virtuelle miljøer gir et isolert utviklingsmiljø for hvert prosjekt, slik at du kan installere de pakkene som er spesifikke for det prosjektet.
- Siden de virtuelle miljøene er uavhengige og isolerte, kan ulike prosjekter bruke forskjellige versjoner av samme bibliotek, avhengig av behovene. Du trenger heller ikke å bekymre deg for systemtillatelser når du installerer biblioteker og setter opp utviklingsmiljøet.
- Når du har installert pakker i et virtuelt miljø, kan du lagre prosjektets avhengigheter i en requirements.txt-fil. Dette gjør at andre utviklere enkelt kan gjenskape prosjektets utviklingsmiljø, og installere de nødvendige pakkene ved hjelp av en enkel kommando.
Du har nå lært om hvordan virtuelle miljøer fungerer og fordelene med å bruke dem. La oss se på noen populære verktøy du kan bruke til å opprette og administrere virtuelle miljøer i Python.
#1. Virtualenv
Virtualenv er et populært verktøy for å lage og administrere virtuelle miljøer i Python. En del av funksjonaliteten til virtualenv finnes også i venv-pakken. Virtualenv-pakken er likevel raskere og mer utvidbar sammenlignet med venv.
#2. Pipenv
Med pipenv får du både den virtuelle miljøfunksjonaliteten fra virtualenv og pakkehåndteringsfunksjoner fra pip. Pipenv bruker pipfiler for å håndtere prosjektavhengigheter i et virtuelt miljø.
Du kan prøve pipenv direkte i nettleseren på denne Pipenv-lekeplassen.
#3. Conda
Hvis du bruker Anaconda-distribusjonen for Python, kan du bruke conda til å håndtere pakker og lage virtuelle miljøer.
Se denne detaljerte guiden for å lære mer om å administrere miljøer med conda.
#4. Poetry
Poetry er et pakkehåndteringsverktøy som gjør det mulig å administrere avhengigheter for alle dine Python-prosjekter. Du må ha Python 3.7 eller nyere installert for å bruke Poetry.
#5. Venv
Som nevnt, tilbyr venv en del av funksjonaliteten til virtualenv, men den har fordelen at den er innebygd i Pythons standardbibliotek fra og med Python 3.3.
Den er lett tilgjengelig med Python-installasjonen og krever ikke at du installerer eksterne pakker. Vi kommer til å bruke venv i denne veiledningen for å lage og jobbe med virtuelle miljøer. ✅
Hvordan lage et virtuelt Python-miljø i Ubuntu
💬 For å følge resten av denne veiledningen, må du ha en lokal installasjon av Python 3. Sørg for at du bruker Python 3.5 eller nyere.
Denne delen beskriver hvordan du oppretter og aktiverer virtuelle miljøer på en Ubuntu Linux-maskin. De samme trinnene kan også brukes på andre Linux-distribusjoner.
For å gjøre det enklere å administrere, la oss opprette en prosjektkatalog og navigere inn i den. Vi kommer til å lage venv i denne katalogen.
$ mkdir my_project $ cd my_project
Den generelle syntaksen for å lage et virtuelt miljø for Python-prosjektet ditt er `python3 -m venv
$ python3 -m venv my_env
Hvordan aktivere og installere pakker i et virtuelt miljø
Etter at du har opprettet det virtuelle miljøet, kan du aktivere det og installere de pakkene du trenger. For å aktivere det virtuelle miljøet kan du kjøre følgende kommando:
$ source my_env/bin/activate
Når du har aktivert et virtuelt miljø, kan du kjøre kommandoen `pip list` for å få en oversikt over installerte pakker:
$ pip list
Siden vi ikke har installert noen pakker ennå, vil du kun se setuptools og pip – som er installert som standard – i de opprettede virtuelle miljøene.
Installasjonen av pip i det virtuelle miljøet gjør det mulig å installere de pakkene som er nødvendige for det aktuelle prosjektet. Dette er grunnen til at du får et uavhengig utviklingsmiljø for hvert prosjekt.
Nå som det virtuelle miljøet er aktivert, kan du installere prosjektspesifikke pakker ved hjelp av pip. La oss for eksempel installere `requests`, en av de mest nedlastede Python-pakkene, som tilbyr nyttige funksjoner for å sende HTTP-forespørsler ved bruk av web-APIer.
$ pip install requests
Når du installerer `requests`-biblioteket, vil du se at det installeres sammen med alle de pakkene som det er avhengig av.
$ pip list
Du kan bruke kommandoen `pip freeze` og omdirigere resultatet til en `requirements.txt`-fil, som vist her:
$ pip freeze > requirements.txt
Om du ser på innholdet i prosjektkatalogen din, vil du se at `requirements.txt`-filen er opprettet.
$ ls # my_env requirements.txt
Du kan deaktivere det virtuelle miljøet når du er ferdig med å jobbe på prosjektet, ved å kjøre følgende kommando:
$ deactivate
Hvordan lage et virtuelt Python-miljø i Windows
Generelt sett foretrekkes et Linux-miljø for utvikling. Hvis du bruker en Windows-maskin, kan du vurdere å bruke Windows Subsystem for Linux (WSL) for å sette opp et Ubuntu-terminalmiljø for lokal utvikling.
Hvis du er på en Windows-maskin, kan du bruke enten Windows PowerShell eller ledeteksten for å lage virtuelle miljøer ved hjelp av følgende kommando:
> python -m venv <sti-til-venv>
Hvordan aktivere et virtuelt miljø
Aktivering av virtuelle miljøer på en Windows-maskin gjøres litt forskjellig, avhengig av om du bruker ledeteksten eller Windows PowerShell.
Hvis du bruker ledeteksten, kan du kjøre følgende kommando for å aktivere det virtuelle miljøet:
> <sti-til-venv>Scriptsactivate.bat
Alternativt, om du bruker Windows PowerShell, vil denne kommandoen aktivere det virtuelle miljøet:
> <sti-til-venv>ScriptsActivate.ps1
Deretter kan du installere alle de pakkene du trenger inne i det virtuelle miljøet.
Du kan deaktivere det virtuelle miljøet ved hjelp av `deactivate`-kommandoen, både i ledeteksten og Windows PowerShell.
Konklusjon
I denne artikkelen har vi diskutert begrensningene ved globale installasjoner, og hvordan det gjør det vanskelig å håndtere avhengigheter i Python-prosjekter. Virtuelle miljøer i Python gir en god måte å administrere avhengigheter på, samtidig som de sørger for et isolert utviklingsmiljø for hvert prosjekt.
Vi har sett på flere verktøy for å lage og administrere virtuelle miljøer, og du har lært hvordan du kan bruke `venv` – som er innebygd i Pythons standardbibliotek – for å lage og aktivere virtuelle miljøer.
Inne i et prosjekts dedikerte virtuelle miljø, kan du installere de versjonene av bibliotekene som prosjektet trenger. Disse kravene kan deretter lagres i en `requirements.txt`-fil, som gjør det enkelt for andre utviklere å gjenskape prosjektmiljøet.
Når du starter ditt neste Python-prosjekt, bør du sørge for å bruke virtuelle miljøer for bedre avhengighetshåndtering. Lykke til med kodingen! 🎉