Lesson 16: Virtual Environments (Virtualios Aplinkos) [LTU] - CodeAcademy-Online/python-level-1 GitHub Wiki
Įvadas
Kad suprastume, kas iš tikrųjų yra virtualioji aplinka
ir kaip ji gali palengvinti mūsų gyvenimą, apžvelkime keletą dalykų, su kuriais galite susidurti kurdami paprastą "Python" projektą.
Python projektas gali būti priklausomas nuo kelių trečiųjų šalių bibliotekų, kad pasiektumėte savo verslo tikslą. Visus šiuos papildomus paketus (bibliotekas) / priklausomybes galite valdyti naudodami python paketų tvarkyklę, vadinamą pip
.
Norėdami patikrinti savo pip
versiją, galite atlikti šiuos veiksmus:
python3 -m pip --version
Paketą/ biblioteką galite įdiegti naudodami pip
komandą install:
python -m pip install <package-name>
pip
standartiškai visada įdiegia naujiausią bet kokio paketo versiją (kol nepateikiama konkreti to paketo versija) ir taip pat įdiegia visas priklausomybes, kurios reiklingos tam paketui/bibliotekai.
Kuom naudinga?
Tarkime, jūs kuriate projektą Project A
, kuris veikia su Python 3.5 versija , ir taip pat pradedate dirbti su kitu Python projektu Project B
, kuris reikalauja Python 3.9.
Tiek Project A
, tiek Project B
tikslams pasiekti gali prireikti bibliotekos lib A
, tačiau Project A
, kuris veikia su python 3.5, gali būti suderinamas su kita lib A
versija, o Project B
(python 3.9) gali būti suderinamas su kita versija (pvz: Flask).
Net jei keli jūsų projektai naudoja tą pačią "Python" versiją, gali iškilti atvejis, kai atnaujinama priklausomybės versija (pvz: Tas pats Flask ) bet kuriam iš jūsų naujų projektų gali pažeisti esamo projekto funkcionalumą.
Kadangi pagal numatytuosius nustatymus kiekvienas jūsų sistemos projektas rašys ir naudos trečiųjų šalių paketus iš to paties katalogo, tai kelia sunkumų, nes gali pažeisti bet kurio iš jūsų projektų funkcionalumą.
Virtualios aplinkos
Oficialioje Python dokumentacijoje rašoma:
Virtuali aplinka - tai tokia "Python" aplinka, kurioje įdiegtas "Python" interpretatorius, bibliotekos ir scenarijai yra izoliuoti nuo kitose virtualiose aplinkose įdiegtų programų ir (pagal numatytuosius nustatymus) bet kokių bibliotekų, įdiegtų "sisteminiame" "Python", t. y. tokiame, kuris įdiegtas kaip operacinės sistemos dalis.
Pirmiau pateiktas apibrėžimas yra pakankamai paprastas, kad suprastumėte, jog virtualioji aplinka
tiesiog siūlo jums izoliuotą vietą projekto priklausomybėms tvarkyti taip, kad jos netrukdytų bibliotekoms, įdiegtoms bet kurioje kitoje virtualiojoje aplinkoje arba įdiegtoms jūsų sistemoje.
Kiekvienam projektui, su kuriuo dirbate, galite tiesiog sukurti virtualią aplinką. Aptarsime dvi labai populiarias virtualiųjų aplinkų tvarkykles: venv ir Pipenv.
venv
Įprastas būdas kurti virtualias aplinkas buvo naudojant python biblioteką, žinomą kaip virtualenv, tačiau nuo python versijos 3.3
dalis virtualenv
iš tikrųjų buvo integruota į python su modulio pavadinimu venv
. Dabar virtualią aplinką galite sukurti naudodami šią komandą:
python3 -m venv <name_of_your_choice>
Kas čia vyksta?
- Na, python3 yra jūsų įdiegta python programa. Jei jūsų įdiegta python versija vadinasi python, python3.7 arba python3.9 ar dar kaip nors kitaip, tuomet naudokite ją;
-m venv
yra argumentas, nurodantis python paleisti virtualios aplinkos modulįvenv
;- Paskutinis argumentas
<name_of_your_choice>
yra jūsų virtualios aplinkos aplanko pavadinimas. Kai kurie žmonės mėgsta naudoti kitą pavadinimą (pvz., env arba .env), tačiau tai priklauso tik nuo jūsų.
👨🏫 ❗ PRO PATARIMAS ❗
** Jei naudojate git
, norėdami įsitikinti, kad virtualioje aplinkoje nevaldote versijų, į naują .gitignore
failo eilutę įrašykite venv/
. Jei pamiršite šį veiksmą, galite užkimšti savo git saugyklą šimtais papildomų versijų kontroliuojamų failų**
Sukūrus virtualią aplinką, daugiau to daryti nebereikės.
Darbo eiga
Norėdami naudoti virtualią aplinką, turite ją "aktyvuoti" naudodami šią komandą:
("MacOS" ir "Linux ")
source <name_of_your_choice>/bin/activate
arba (Windows)
<name_of_your_choice>\Scripts\activate
Pirmiau pateiktos komandos pakeitė komandas python
ir pip
(python paketų tvarkyklė), kad jos būtų nukreiptos į tuos, kurie yra venv
aplanke. Turėtų pasirodyti naudingas indikatorius, rodantis, kad naudojate virtualią aplinką, pvz:
(<name_of_your_choice>) $
Tai reiškia, kad kai su pip
įdiegsite paketą, pvz:
pip install numpy
Dabar jį įdiegsite į virtualią aplinką, esančią aplanke <name_of_your_choice>
. Jei norite, turėtumėte turėti galimybę peržiūrėti įdiegtų paketų rinkmenas, esančias <name_of_your_choice>/lib/python3.9/site-packages
. Jei ši versija skiriasi, turėsite pakeisti python3.9
(arba bet kurią kitą jūsų naudojamą versiją) savo versija.
Pavyzdys:
Tęsdami šį pavyzdį, jei dabar paleisite "Python" interaktyviuoju režimu, galėsite pasiekti šiuos paketus naudodami šias komandas:
python
import numpy as np
print(np.sqrt(5))
Jei viskas vyko teisingai, turėjote pamatyti kažką panašaus į toliau pateiktą pavyzdį:
Taip pat turėtumėte turėti prieigą prie visų bibliotekų, kuriuos įdiegėte naudodami python, kad galėtumėte paleisti savo python failus. Pavyzdžiui, jei norėtumėte naudoti virtualioje aplinkoje esantį python, kad paleistumėte failą, pavadintą main.py
, tai galėtumėte padaryti naudodami šią komandą:
python main.py
Baigę dirbti su virtualia aplinka, galite uždaryti terminalą arba deaktyvuoti aplinką naudodami komanda:
deactivate
Taip pat dabar galėsite aktyvuoti kitą virtualią aplinką kitam savo projektui, jei to prireiktų.
Aplinkos atkūrimas
Galite atkurti virtualią "Python" aplinką (pvz., kitame kompiuteryje), dažniausiai norėsite išsaugoti informaciją apie įdiegtas bibliotekas/paketus faile. Tai leis bet kuriam asmeniui, turinčiam jūsų failą, įdiegti tas pačias paketų versijąs, kurią naudojote kurdami projektą. Tačiau greičiausiai vis tiek norėsite nurodyti, kokią "Python" versiją naudojate. Dažniausiai šiam tikslui yra naudojamas failas - requirements.txt
.
Jei aktyvavote "Python" virtualiąją aplinką, galite automatiškai sugeneruoti requirements.txt failą, naudodami šiuos veiksmus:
pip freeze > requirements.txt
Taigi, jei jūs ar kas nors kitas norėtų sukurti virtualią aplinką ir naudoti tuos pačius paketus, kaip ir jūs, jie gali vadovautis pirmiau pateiktomis komandomis, kad sukurtų ir aktyvuotų virtualią aplinką, o tada įdiegtų savo reikalavimus. Įdiegti reikalavimus galima naudojant pip install
metodą -r
, kaip nurodyta toliau:
pip install -r requirements.txt
Pipenv
pipenv
naudojimas turi keletą privalumų, palyginti su pip
ir venv
naudojimu. Tai yra pagrindiniai iš jų:
- Jums nebereikia atskirai naudoti
pip
irvenv
. Vietoj to turite vieną įrankį, kuris atlieka viską - ir dar daugiau! pipenv
atskiria jūsų aukščiausio lygio bibliotekų priklausomybes nuo paskutinio išbandyto derinio (pvz., pip freeze išvesties). Dėl to priklausomybių valdymas jums, kaip kūrėjui, tampa patogesnis.pipenv
skatina naudoti naujausias priklausomybių versijas, kad būtų sumažinta saugumo rizika. Jis netgi gali nuskaityti jūsų priklausomybes dėl žinomų pažeidžiamumų.pipenv
suteikia galimybę susipažinti su jūsų priklausomybių grafiku naudojantpipenv graph
.pipenv
sukešuoja visas priklausomybes. Jis aptiks paketus, kurie buvo pažeisti po to, kai iš pradžių įtraukėte juos kaip priklausomybę.pipenv
gali dirbti ir surequirements.txt
failais. Jei toks failas yra, jis automatiškai jį aptiks ir konvertuos įPipfile
.
Darbo eiga
Pipenv
yra trečiosios šalies paketas, todėl pirmiausia jį reikia įdiegti:
pip install pipenv
Tada galite pereiti į savo produkto katalogą (arba sukurti naują katalogą, jei pradedate naują projektą, kaip čia darau aš) ir jame įdiegti ipipenv
:
mkdir ~/dev/projects/my-new-project && cd ~/dev/projects/my-new-project
pipenv install
Taip bus sukurti du nauji failai: Pipfile
ir Pipfile.lock
.
Norėdami įjungti virtualią aplinką:
$ pipenv shell
Norėdami įdiegti paketus su pipenv
:
pipenv install <package name>
Paketų įtraukimas į aplinką:
pipenv lock -r
Norėdami parodyti, kokie paketai yra įdiegti (ir jų priklausomybės), galite paleisti:
pipenv graph
Paketų pašalinimas:_
pipenv uninstall <package name>
Pratimai:
- Sukurkite virtualią aplinką naudodami python
venv
ir įdiekite bent vieną paketą išPip
saugyklų. - Sukurkite virtualią aplinką naudodami python
pipenv
ir įdiekite bent vieną paketą išPip
saugyklų. - Naudokite bet kurią iš virtualios aplinkos parinkčių, įdiekite
random-word
paketą ir sukurkite "Python" scenarijų, kuris išspausdintų 5 atsitiktinius žodžius (vardai turi būti iš didžiųjų raidžių ir surūšiuoti).