Piton

Virtualna okruženja u Pythonu 3

Virtualna okruženja u Pythonu 3
Kao i većina ljudi, mrzim instalirati nepotrebne pakete na svoju radnu stanicu. Nakon što završite s njima, deinstaliranje ih nikad nije dovoljno. Paketi ostavljaju za sobom tone mapa i datoteka. Potrebni su mnogi drugi (opskurni) paketi koji su također ostavljeni nakon stvari. Te se stvari polako, ali sigurno nakupljaju na vašoj radnoj stanici i iako možda neće usitniti nijedan značajan dio vašeg prostora na disku, one mogu uzrokovati druge probleme.

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 uvoz

Paket 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 nadogradit će paket na vašem OS-u uzrokujući probleme kada se vratite na održavanje starijih projekata.

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-venv

Zatim idemo na direktorij unutar kojeg želite da se kreira vaš direktorij virtualnog okruženja. Za mene je to ~ / project1

$ cd ~ / projekt1

Stvorite 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-env

Napomena: 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:

  1. 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.
  2. 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.

Instalirajte najnoviju strategiju igre OpenRA na Ubuntu Linux
OpenRA je Libre / Free Real Time strateški pokretač igre koji stvara rane Westwoodove igre poput klasične Command & Conquer: Red Alert. Distribuirani ...
Instalirajte najnoviji Dolphin Emulator za Gamecube i Wii na Linux
Dolphin Emulator omogućuje vam igranje odabranih Gamecube i Wii igara na Linux osobnim računalima (PC). Dolphin Emulator je slobodno dostupan i emula...
Kako koristiti GameConqueror Cheat Engine u Linuxu
Članak pokriva vodič o korištenju GameConqueror varalice u Linuxu. Mnogi korisnici koji igraju igre na sustavu Windows često koriste aplikaciju "Cheat...