Virtualenv i venv: Objašnjena Python virtualna okruženja

Od svih razloga zbog kojih je Python hit među programerima, jedan od najvećih je njegov širok i sve širi izbor paketa trećih strana. Prikladni paketi alata za sve, od unosa i formatiranja podataka do brze matematike i strojnog učenja, samo su neki importili pip installdaleko.

Ali što se događa kada se ti paketi ne igraju lijepo jedni s drugima? Što učiniti kada različiti Python projekti trebaju konkurentske ili nekompatibilne verzije istih dodataka? Tu na scenu stupaju Python virtualna okruženja.

Možete stvarati i raditi s virtualnim okruženjima i u Pythonu 2 i u Pythonu 3, iako su alati različiti. Virtualenv je odabrani alat za Python 2, dok venv rješava zadatak u Pythonu 3. 

Što su Python virtualna okruženja?

Virtualno okruženje je način da se ima više paralelnih instanci Python interpretera, svaka s različitim skupovima paketa i različitim konfiguracijama. Svako virtualno okruženje sadrži diskretnu kopiju tumača Python, uključujući kopije njegovih uslužnih programa.

Paketi instalirani u svakom virtualnom okruženju vide se samo u tom virtualnom okruženju, a niti u jednom drugom. Čak i veliki, složeni paketi s binarnim datotekama ovisno o platformi mogu biti međusobno povezani u virtualnom okruženju.

Postoji nekoliko uobičajenih slučajeva upotrebe virtualnog okruženja:

  1. Razvijate više projekata koji ovise o različitim verzijama istih paketa ili imate projekt koji mora biti izoliran od određenih paketa zbog sudara prostora imena. Ovo je najstandardniji slučaj upotrebe.
  2. Radite u Python okruženju u kojem ne možete mijenjati direktorij web-paketa. To je možda zato što radite u visoko kontroliranom okruženju, poput upravljanog hostinga, ili na poslužitelju na kojem se izbor tumača (ili paketi koji se u njemu koriste) ne mogu promijeniti zbog proizvodnih zahtjeva.
  3. Želite eksperimentirati s određenom kombinacijom paketa pod vrlo kontroliranim okolnostima, na primjer da biste testirali unakrsnu kompatibilnost ili povratnu kompatibilnost.
  4. Želite pokrenuti "osnovnu" verziju tumača Python na sustavu bez nezavisnih paketa i instalirati samo nezavisne pakete za svaki pojedini projekt po potrebi.

Ništa ne govori da Python biblioteku ne možete jednostavno raspakirati u podmapu projekta i tako je koristiti. Isto tako, mogli biste preuzeti samostalnu kopiju tumača Python, raspakirati je u mapu i koristiti za pokretanje skripti i paketa koji su joj posvećeni.

Ali upravljanje takvim kaldrmiranim projektima uskoro postaje teško. To samo čini lakšim za to na prvom mjestu. Rad s paketima koji imaju binarne komponente ili se oslanjaju na složene ovisnosti nezavisnih proizvođača može biti noćna mora. Najbolje dugoročno rješenje je korištenje Pythonovih izvornih mehanizama za stvaranje i rad s virtualnim okruženjima.

Virtualna okruženja u Pythonu 3

Virtualenv se pokazao neophodnim za nebrojene programere Pythona, ali nije dio Pythonove standardne knjižnice. Python 3 ima izvorni alat za virtualna okruženja koji čini cijeli postupak prilično jednostavnim.

Povezani video: Kako Python olakšava programiranje

Savršen za IT, Python pojednostavljuje mnoge vrste poslova, od automatizacije sustava do rada u najmodernijim poljima poput strojnog učenja.

Stvorite virtualno okruženje

Da biste stvorili virtualno okruženje u danom direktoriju, upišite:

python3 -m venv /path/to/directory

(Imajte na umu da možete jednostavno koristiti  pythonumjesto python3ako vaš sustav prepoznaje pythonkao zadani tumač Python 3.)

Cijeli postupak postavljanja virtualnog okruženja može potrajati minutu ili dvije. Kad završi, trebali biste imati direktorij s nekoliko poddirektorijuma. Najvažniji je poddirektorij  binna Unixu ili  Scriptsna sustavu Windows, gdje ćete pronaći kopiju Python interpretera za virtualno okruženje, zajedno s uslužnim programima.

Imajte na umu da, jer svako virtualno okruženje sadrži vlastitu kopiju tumača Python, ono može biti prilično veliko. Na Windowsima i Linuxima, virtualno okruženje Python 3.6 trošit će oko 23 MB prostora na disku.

Aktivirajte virtualno okruženje

Prije nego što budete mogli koristiti ovo virtualno okruženje, morate ga izričito aktivirati . Aktivacija čini virtualno okruženje zadanim Python tumačem za vrijeme trajanja sesije.

Morat ćete koristiti različitu sintaksu za aktiviranje virtualnog okruženja, ovisno o tome koji operativni sustav i školjku naredbi koristite.

  • Na Unixu ili MacOS-u, koristeći bash ljusku: source /path/to/venv/bin/activate
  • Na Unixu ili MacOS-u, koristeći csh ljusku: source /path/to/venv/bin/activate.csh
  • Na Unixu ili MacOS-u, koristeći riblju ljusku: source /path/to/venv/bin/activate.fish
  • U sustavu Windows pomoću naredbenog retka:path\to\venv\Scripts\activate.bat
  • U sustavu Windows koji koristi PowerShell: path\to\venv\Scripts\Activate.ps1

Imajte na umu da aktivirano okruženje radi samo u kontekstu u kojem je aktivirano . Na primjer, ako pokrenete dvije instance PowerShell-a, A i B, a virtualno okruženje aktivirate samo u primjerku A, to će se okruženje primijeniti samo na A. Ne bi se primjenjivalo nigdje drugdje.

Konfigurirajte i koristite virtualno okruženje

Nakon što aktivirate novo virtualno okruženje, možete koristiti upravitelj paketa pip za dodavanje i promjenu paketa za njega. Pip ćete pronaći u Scriptspoddirektoriju virtualnog okruženja na Windowsima i u binpoddirektoriju na Unix OS-ima.

Ako ste već upoznati s načinom rada pipa, spremni ste. Isto bi trebalo biti i u virtualnom okruženju. Samo provjerite koristite li instancu pip koja upravlja paketima za virtualno okruženje u kontekstu u kojem je aktivirana - npr. Bash sesija ili Windows CLI / PowerShell sesija. Ako želite provjeriti upotrebljavate li pravi pip i pravo virtualno okruženje, upišite pip -Vi provjerite pokazuje li put koji prikazuje prema poddirektoriju vašeg virtualnog okruženja.

Da biste koristili virtualno okruženje koje ste stvorili za pokretanje Python skripti, jednostavno pozovite Python iz naredbenog retka u kontekstu u kojem ste ga aktivirali.

Deaktiviranje virtualnog okruženja

Kada završite s korištenjem virtualnog okruženja, možete samo prekinuti sesiju u kojoj ste je koristili. Ako želite nastaviti raditi u okruženju, ali umjesto toga sa zadanim tumačem Python, upišite deactivateu upit. Korisnici Windowsa u naredbenom retku moraju se pokretati deactivate.batiz Scriptspoddirektorijuma, ali Unixovi korisnici i Windows korisnici koji koriste PowerShell mogu jednostavno upisati deactivatebilo koji direktorij.

Uklanjanje virtualnog okruženja

Virtualna okruženja su samostalna. Kad vam više ne treba virtualno okruženje, možete jednostavno izbrisati njegov direktorij.

Virtualna okruženja u Pythonu 2

S Pythonom 2, virtualna okruženja nisu izvorna značajka jezika. Umjesto toga, morate instalirati biblioteke trećih strana za stvaranje i upravljanje virtualnim okruženjima.

Najpopularniji i najčešće korišten od ovih projekata je virtualenv, koji upravlja stvaranjem strukture direktorija i kopiranjem potrebnih datoteka u virtualno okruženje. Da biste instalirali virtualenv, samo upotrijebite pip install virtualenv. Da biste s njim stvorili direktorij virtualnog okruženja, upišite virtualenv /path/to/directory. Aktiviranje i deaktiviranje virtualnog okruženja djeluje na isti način kao i za virtualna okruženja u Pythonu 3 (vidi gore).

Korištenje virtualnih okruženja s Jupyterovim prijenosnicima

Ako koristite Jupyterove bilježnice (aka IPython bilježnice), a Jupyter vam je već instaliran na cijelom sustavu, stvorite svoje virtualno okruženje i aktivirajte ga. Zatim iz direktorija vašeg virtualnog okruženja pokrenite pip install ipykernelkako biste dodali potrebne komponente za IPython. Na kraju, pokrenite ipython kernel install —user —name=, gdje je ime_projekta ime koje želite povezati s tim određenim projektom. Odatle biste trebali moći pokrenuti Jupyter i prebaciti se na IPython kernel koji ste instalirali unutar virtualnog okruženja.