Starije ovisnosti
Stariji paketi mogu se zadržati i vaš će ih Python kôd rado koristiti. To nije problem ako su vaše Python skripte namijenjene lokalnom pokretanju, a ne u industrijske svrhe. Znanstvenici podataka, studenti, pa čak i redovni ljudi koji automatiziraju svoje svakodnevne zadatke, mogu jednostavno nastaviti koristiti starije pakete bez većih problema.
Problem započinje kada svoj kod otpremite u produkciju. Kada to učinite, velika je vjerojatnost da ćete poslati glavnu skriptu, a ne sve ovisnosti o paketu. Na primjer, ako ste napisali mikrouslugu koja će se isporučivati kao funkcija AWS Lambda, prvih nekoliko redaka može uvoziti modul zahtjeva poput ovog:
zahtjev za uvozPaket zahtjeva koji isporučuje AWS lambda razlikovat će se od vašeg starijeg pa bi se program mogao srušiti.
Sukobi
Sukobi mogu doći i na sliku kada različiti projekti koriste različite verzije istog paketa. Možda neki od vaših starijih projekata trebaju starije pip pakete. No, noviji paket možda će vam trebati za druge projekte. Pokretanje pip install -U
Python virtualna okruženja
Ako koristite bilo koju verziju Pythona iznad 3.5, možete koristiti ugrađeni modul nazvan venv za stvaranje onoga što se naziva Python virtualnim okruženjima. Ovaj modul čini stvaranje izolirane mape ili direktorija u kojem mogu živjeti svi vaši pip paketi i ostale ovisnosti. Mapa također sadrži skriptu za aktiviranje. Kad god želite koristiti određeno virtualno okruženje, jednostavno pokrenete ovu skriptu nakon koje se može pristupiti samo paketima koji se nalaze u ovoj mapi. Ako pokrenete pip install, paketi će se instalirati unutar ove mape i nigdje drugdje. Nakon što završite s korištenjem okoline, možete ga jednostavno 'deaktivirati' i tada će vam biti dostupni samo globalni pip paketi.
Ako koristite Ubuntu 18.04 i novije verzije, ne trebate ni instalirati upravitelj paketa pip na čitav svoj sustav. Pip može postojati unutar vašeg virtualnog okruženja samo ako vam je to draže.
Instaliranje venv-a i stvaranje virtualnih okruženja
Ubuntu 18.04 LTS dolazi iz kutije s Pythonom 3.6.x, ali Python venv modul nije instaliran, kao ni pip. Ugradimo samo venv.
$ apt instalirajte python3-venvZatim idemo na direktorij unutar kojeg želite da se kreira vaš direktorij virtualnog okruženja. Za mene je to ~ / project1
$ cd ~ / projekt1Stvorite svoj venv sa sljedećom naredbom, imajte na umu da je my-env samo ime tog okruženja, možete ga imenovati kako god želite:
$ python3 -m venv my-envNapomena: Neke instalacije Python3, poput onih dostupnih na Windowsima, pozivate Python interpreter koristeći samo python, a ne python3, ali to se mijenja od sustava do sustava. Radi dosljednosti koristit ću samo python3.
Nakon završetka izvršavanja naredbe primijetit ćete novu mapu ~ / project1 / my-evn. Da biste aktivirali virtualno okruženje my-env, morat ćete:
- Trčanje,
$ source ~ / project1 / my-env / bin / activate
ako koristite Bash.
Postoje alternativne skripte koje se nazivaju aktivirati.ribu i aktivirati.csh za ljude koji koriste ribu, odnosno školjke. - Na Windowsu se skripta može pozvati pokretanjem:
>.\ my-env \ Scripts \ activate.šišmiš
ako koristite naredbeni redak, ili,>.\ my-env \ Scripts \ activate.ps1
ako koristite PowerShell.
Korištenje virtualnih okruženja
Nakon što uspješno pokrenete skriptu, primijetit ćete da se prompt mijenja u nešto poput onoga što je prikazano u nastavku, sada možete instalirati pakete pomoću pipa:
(my-env) $ pip3 zahtjevi za instalaciju## Instalirane pakete možemo navesti pomoću naredbe 'pip freeze'
(my-env) $ pip3 zamrzavanje
certifi == 2018.10.15
chardet == 3.0.4
idna == 2.7
pkg-resursi == 0.0.0
zahtjeva == 2.20.1
urllib3 == 1.24.1
Sve dok je virtualno okruženje aktivno (kao što je naznačeno od upita) svi će se paketi spremati samo u direktorij virtualnog okruženja (my-env), bez obzira gdje se nalazite u datotečnom sustavu.
Da biste izašli iz virtualnog okruženja, u upit možete utipkati deaktivirati i vratit ćete se korištenju instalacije Pythona na cijelom sustavu. Možete primijetiti da novi paketi koje smo upravo instalirali neće biti prikazani u globalnoj pip instalaciji.
Da biste se riješili virtualnog okruženja, jednostavno izbrišite mapu my-env koja je stvorena nakon pokretanja modula. Možete stvoriti onoliko okruženja koliko želite.
Zaključak
S venv modulom virtualna su okruženja sada dostupna kao standardna značajka Pythona, pogotovo ako instalirate s Pythona.org. Prije smo imali mnogo implementacija trećih strana pod nazivom virtualenv, pyenv, itd.
To je dovelo do sve više napuhanog softvera poput Anaconde, posebno popularnog među znanstvenicima podataka. Dobro je napokon imati pojednostavljeni alat za upravljanje Python paketima bez potrebe za instaliranjem puno drugih nepovezanih smeća. Više o venvu možete pročitati ovdje.