U ovom tekstu ćete se upoznati sa načinom na koji se pokreću virtuelna okruženja u Python-u, kako na Windows, tako i na Linux operativnim sistemima.
Kada počnete da radite na većem broju projekata u vašem lokalnom razvojnom okruženju, često ćete se susretati sa izazovima koji se tiču zavisnosti. Stvaranje virtuelnog okruženja za svaki od vaših projekata može značajno olakšati upravljanje zavisnostima i zahtevima projekta.
Da bismo iskoristili sve prednosti virtuelnih okruženja u Python-u, naučićemo kako da ih kreiramo i aktiviramo. 👩🏽💻
Šta su virtuelna okruženja?
Virtuelna okruženja predstavljaju izolovana i nezavisna okruženja koja sadrže kod i zavisnosti nekog projekta.
Ali, zašto uopšte koristiti virtuelna okruženja?
Odgovor je jednostavan, virtuelna okruženja vam omogućavaju da instalirate i koristite različite verzije istih biblioteka za različite projekte. Upotrebom virtuelnih okruženja osiguravate da neće doći do neželjenih promena kada dva ili više projekata koriste različite verzije biblioteka. Hajde da ovo detaljnije razmotrimo.
Instaliranje paketa u Python-u
Python standardna biblioteka sadrži nekoliko korisnih modula za testiranje jedinica, interakciju sa operativnim sistemom, rad sa datumima i vremenom, i još mnogo toga.
Međutim, pri radu na Python projektima, često ćete morati da instalirate dodatne pakete – koje je razvila Python zajednica. Ovo je posebno čest slučaj kod aplikacija kao što su web scraping za prikupljanje podataka, mašinsko učenje i web aplikacije.
Za instalaciju i upravljanje ovim paketima, možete koristiti conda ili pip.
Svaki projekat zahteva specifičan skup paketa koje je potrebno instalirati. Ipak, kada instalirate sve pakete u vaše razvojno okruženje na lokalnom računaru, svi projekti dele globalno instalirane pakete.
Zašto je ovo problem?
Problem je u tome što možete imati veliki broj paketa u vašem razvojnom okruženju. Međutim, projekat na kome trenutno radite može zahtevati samo mali deo tih paketa. Kada svi projekti dele zajedničke instalacije, vrlo je teško identifikovati koji projekat zahteva koji od instaliranih paketa – zavisnosti specifične za svaki projekat.
Postoji još jedno ograničenje ovog pristupa. Pretpostavimo da imate Django 2.2 projekat u vašoj biblioteci projekata. Odlučite da počnete da radite na projektu koji koristi Django 4. Zato instalirate najnoviju verziju Django-a u istom razvojnom okruženju.
Šta se dešava sa postojećom instalacijom?
Ona se uklanja i zamenjuje verzijom Django-a koju ste upravo instalirali. Sa novijim stabilnim izdanjima, neke funkcije mogu biti zastarele, a vaši raniji Django projekti možda neće raditi kako se očekivalo.
Da sumiramo dosadašnju diskusiju: upravljanje zavisnostima postaje komplikovano kada su svi paketi instalirani u zajedničkom okruženju, jer svaki projekat zahteva svoj jedinstveni skup biblioteka za ispravan rad.
Kako funkcionišu virtuelna okruženja
Do sada smo videli izazove vezane za instaliranje paketa u globalnom razvojnom okruženju (instalacije na nivou sistema). Ovo nas motiviše da razumemo kako virtuelna okruženja rešavaju ovo ograničenje.
Kada kreirate i aktivirate virtuelno okruženje za vaše Python projekte, možete instalirati samo one pakete koji su neophodni za konkretan projekat.
Ako se vratimo na primer sa Django projektima, sa virtuelnim okruženjima možete pokretati i Django 2.2 i Django 4 projekte – bez ikakvog konflikta. Razlog za to je što Django instalacije više nisu sistemske instalacije, već su ograničene na virtuelna okruženja odgovarajućih projekata.
U suštini: virtuelna okruženja su izolovana okruženja koja sadrže i kod i zavisnosti za projekat.
Prednosti virtuelnih okruženja
Sada kada ste naučili kako virtuelna okruženja funkcionišu u Python-u, nabrojimo prednosti njihove upotrebe:
- Virtuelna okruženja pružaju izolovano razvojno okruženje za pojedinačne projekte, omogućavajući nam da instaliramo samo pakete koji su potrebni za određeni projekat.
- Pošto su virtuelna okruženja projekata nezavisna i izolovana, različiti projekti mogu koristiti različite verzije iste biblioteke—u skladu sa svojim potrebama. Sa virtuelnim okruženjima, ne morate da brinete o sistemskim dozvolama da biste instalirali biblioteke i konfigurisali razvojno okruženje.
- Kada instalirate pakete u virtuelnom okruženju, možete da snimite zavisnosti projekta u datoteku requirements.txt. Ovo omogućava drugim programerima da replikuju razvojno okruženje projekta i instaliraju potrebne pakete koristeći jednu komandu.
Do sada ste saznali kako virtuelna okruženja funkcionišu i koje su prednosti njihove upotrebe. Hajde da istražimo neke popularne alate koje možete koristiti za kreiranje i upravljanje virtuelnim okruženjima u Python-u.
#1. Virtualenv
Virtualenv je jedan od najčešće korišćenih alata za kreiranje i upravljanje virtuelnim okruženjima za Python projekte. Podskup funkcionalnosti Virtualenv-a je dostupan u venv paketu. Međutim, virtualenv paket je brži i pruža više opcija u poređenju sa venv-om.
#2. Pipenv
Uz pipenv, dobijate funkcionalnost virtuelnog okruženja virtualenv-a i mogućnosti upravljanja paketima pip-a. On koristi fajlove za upravljanje zavisnostima projekta unutar virtuelnog okruženja.
Pipenv možete isprobati direktno iz pretraživača na ovom Pipenv igralištu.
#3. Conda
Ako koristite Anaconda distribuciju Python-a za razvoj, onda možete koristiti conda za upravljanje paketima i za kreiranje virtuelnih okruženja.
Za više informacija, pogledajte ovaj sveobuhvatni vodič o upravljanju okruženjima pomoću conda.
#4. Poetry
Poetry je alat za upravljanje paketima koji vam omogućava da upravljate zavisnostima u svim Python projektima. Da biste počeli da koristite Poetry, morate imati instaliran Python 3.7 ili noviju verziju.
#5. Venv
Kao što je već spomenuto, venv nudi podskup funkcionalnosti virtualenv-a, ali ima prednost što je ugrađen u standardnu biblioteku Python-a, počevši od Python-a 3.3.
Lako je dostupan uz Python instalaciju i ne zahteva instalaciju spoljnih paketa. Koristićemo ga u ovom vodiču za kreiranje i rad sa virtuelnim okruženjima. ✅
Kako kreirati Python virtuelno okruženje u Ubuntu-u
💬 Da biste pratili ostatak ovog uputstva, neophodno je da imate lokalnu instalaciju Python-a 3. Uverite se da koristite Python 3.5 ili noviju verziju.
Ovaj odeljak opisuje korake za kreiranje i aktiviranje virtuelnih okruženja na Ubuntu Linux mašini. Isti koraci se mogu koristiti i na drugim Linux distribucijama.
Radi lakšeg upravljanja, napravimo direktorijum projekta i uđimo u njega; kreiraćemo venv unutar ovog direktorijuma.
$ mkdir my_project $ cd my_project
Opšta sintaksa za kreiranje virtuelnog okruženja za vaš Python projekat je python3 -m venv <ime-venv-ili-putanja>. Nakon pokretanja ove komande, virtuelno okruženje pod nazivom my_env biće kreirano u trenutnom radnom direktorijumu:
$ python3 -m venv my_env
Kako aktivirati i instalirati pakete unutar virtuelnog okruženja
Nakon što ste kreirali virtuelno okruženje, možete ga aktivirati i instalirati potrebne pakete u njega. Da biste aktivirali virtuelno okruženje, možete pokrenuti sledeću komandu:
$ source my_env/bin/activate
Kada aktivirate virtuelno okruženje, možete pokrenuti komandu pip list da biste dobili listu instaliranih paketa:
$ pip list
Do sada nismo instalirali nijedan paket, tako da bi trebalo da budete u mogućnosti da vidite setuptools i pip — koji su podrazumevano instalirani — u svakom od kreiranih virtuelnih okruženja.
Instalacija pip-a unutar virtuelnog okruženja omogućava vam da instalirate pakete potrebne za određeni projekat; na taj način imate nezavisno razvojno okruženje za svaki projekat.
Sada kada ste aktivirali virtuelno okruženje, možete da instalirate pakete specifične za projekat koristeći pip. Kao primer, hajde da instaliramo Python requests, jedan od najčešće preuzimanih Python paketa, koji pruža nekoliko korisnih funkcija za slanje HTTP zahteva za rad sa web API-jima.
$ pip install requests
Kada instalirate biblioteku requests, videćete da se biblioteka requests instalira zajedno sa svim paketima koji su joj potrebni.
$ pip list
Možete koristiti komandu pip freeze i preusmeriti izlaz na datoteku requirements.txt, kao što je prikazano:
$ pip freeze > requirements.txt
Ako pregledate sadržaj trenutnog direktorijuma projekta, videćete da je datoteka requirements.txt kreirana.
$ ls # my_env requirements.txt
Možete da deaktivirate virtuelno okruženje nakon što ste završili rad na projektu tako što ćete pokrenuti sledeću komandu:
$ deactivate
Kako kreirati Python virtuelno okruženje u Windows-u
Generalno, Linux okruženje je poželjno za razvoj. Ako koristite Windows mašinu, možete razmisliti o korišćenju Windows podsistema za Linux (WSL) da biste podesili Ubuntu terminalsko okruženje za lokalni razvoj.
Ako ste na Windows mašini, možete koristiti Windows PowerShell ili komandnu liniju i kreirati virtuelna okruženja pomoću sledeće komande:
> python -m venv <putanja-do-venv>
Kako aktivirati virtuelno okruženje
Aktiviranje virtuelnih okruženja na Windows mašini se razlikuje u zavisnosti od toga da li radite na komandnoj liniji ili Windows PowerShell-u.
Ako ste na komandnoj liniji, pokrenite sledeću komandu da biste aktivirali virtuelno okruženje:
> <putanja-do-venv>Scriptsactivate.bat
Alternativno, ako koristite Windows PowerShell, pokretanje ove komande će aktivirati virtuelno okruženje:
> <putanja-do-venv>ScriptsActivate.ps1
Možete instalirati sve potrebne pakete unutar virtuelnog okruženja.
Da biste deaktivirali virtuelna okruženja, možete pokrenuti komandu za deaktivaciju—i na komandnoj liniji i na Windows PowerShell-u.
Zaključak
U ovom tekstu smo razgovarali o ograničenjima instalacija na sistemskom nivou i o tome kako one otežavaju upravljanje zavisnostima u Python projektima. Virtuelna okruženja u Python-u pružaju način za bolje upravljanje zavisnostima, istovremeno obezbeđujući izolovano razvojno okruženje za pojedinačne projekte.
Među široko korišćenim alatima za kreiranje i upravljanje virtuelnim okruženjima u Python-u, naučili ste kako da koristite venv – koji je ugrađen u Python standardnu biblioteku – za kreiranje i aktiviranje virtuelnih okruženja.
Unutar namenskog virtuelnog okruženja projekta, mogu se instalirati verzije biblioteka koje su specifične za projekat. Ovi zahtevi se zatim mogu snimiti u datoteku requirements.txt, što drugim programerima omogućava da lako replikuju okruženje projekta.
Kada započnete svoj sledeći Python projekat, obavezno koristite virtuelna okruženja za bolje upravljanje zavisnošću. Srećno kodiranje!🎉