Vanemad sõltuvused
Vanemad paketid võivad püsida ja teie Pythoni kood kasutab neid meeleldi. See pole probleem, kui teie Pythoni skriptid on mõeldud töötama kohapeal, mitte tööstuslikel eesmärkidel. Andmeteadlased, üliõpilased ja isegi igapäevaseid ülesandeid automatiseerivad tavalised inimesed saavad vanemaid pakette lihtsalt probleemideta jätkata.
Probleem algab siis, kui saadate oma koodi tootmisse. Kui seda teete, saadate suure tõenäosusega lihtsalt oma põhiskripti ja mitte kõik paketisõltuvused. Näiteks kui olete kirjutanud mikroteenuse, mis tarnitakse funktsioonina AWS Lambda, võivad esimesed read realiseerida päringumooduli järgmiselt:
imporditaotlusAWS lambda pakutav päringupakett erineb teie vanemast ja seetõttu võib programm kokku kukkuda.
Konfliktid
Konfliktid võivad tulla ka olukorda, kus erinevad projektid kasutavad sama paketi erinevaid versioone. Võib-olla vajavad mõned teie vanemad projektid vanemaid pip-pakette. Kuid võib-olla vajate uuemat paketti teiste projektide jaoks. Käivitatakse pip install -U
Pythoni virtuaalsed keskkonnad
Kui kasutate mõnda Pythoni versiooni üle 3.5, saate sisseehitatud mooduli nimega venv luua nn Pythoni virtuaalsed keskkonnad. See moodul loob isoleeritud kausta või kataloogi, kus kõik teie pip-paketid ja muud sõltuvused saaksid elada. Kaust sisaldab ka 'aktiveeri' skripti. Alati, kui soovite kasutada mõnda virtuaalset keskkonda, käivitate selle skripti, pärast mida pääseb juurde ainult selles kaustas olevatele pakettidele. Kui käivitate pip installi, installitakse paketid sellesse kausta ega mujale. Kui olete keskkonna kasutamise lõpetanud, saate selle lihtsalt "deaktiveerida" ja siis on teile saadaval ainult globaalsed pip-paketid.
Kui kasutate Ubuntu 18.04 ja uuemad, ei pea te isegi kogu süsteemi pipipaketi haldurit installima. Pip saab teie virtuaalses keskkonnas eksisteerida ainult siis, kui eelistate seda nii.
Venvi installimine ja virtuaalsete keskkondade loomine
Ubuntu 18.04 LTS tuleb karbist välja koos Python 3-ga.6.x, kuid Pythoni venv-moodulit pole installitud, samuti pole pipi. Paigaldame lihtsalt venv.
$ apt install python3-venvJärgmisena läheme kataloogi, kus soovite oma virtuaalse keskkonna kataloogi luua. Minu jaoks on see ~ / project1
$ cd ~ / projekt1Looge oma venv järgmise käsuga. Pange tähele, et my-env on lihtsalt selle keskkonna nimi, võite selle nimetada mis iganes soovite:
$ python3 -m venv my-envMärkus. Mõned Python3 installid, näiteks Windowsis saadaval olevad, helistate Pythoni interpretaatorisse, kasutades lihtsalt pythoni ja mitte python3, kuid see muutub süsteemiti. Järjepidevuse huvides kasutan ainult python3.
Pärast käsu täitmise lõpetamist märkate uut kausta ~ / project1 / my-evn. My-env virtuaalse keskkonna aktiveerimiseks peate:
- Jookse,
$ source ~ / project1 / my-env / bin / activate
kui kasutate Bashi.
On olemas alternatiivseid skripte, mida nimetatakse aktiveerimiseks.kala ja aktiveerige.csh inimestele, kes kasutavad vastavalt kala ja csh kestasid. - Windowsis saab skripti käivitada, käivitades:
>.\ my-env \ Scripts \ aktiveeri.nahkhiir
kui kasutate käsuviiba, või,>.\ my-env \ Scripts \ aktiveeri.ps1
kui kasutate PowerShelli.
Virtuaalsete keskkondade kasutamine
Kui skript on edukalt käivitatud, märkate, et viip muutub midagi sellist, nagu allpool näidatud, saate nüüd pakette installida pipi abil:
(my-env) $ pip3 installipäringud## Saame installitud paketid loetleda käsuga 'pip freeze'
(my-env) $ pip3 külmutatakse
sertifikaat == 2018.10.15
chardet == 3.0.4
idna == 2.7
pkg-ressursid == 0.0.0
taotlused == 2.20.1
urllib3 == 1.24.1
Niikaua kui virtuaalne keskkond on aktiivne (vastavalt viipale), salvestatakse kõik paketid ainult virtuaalse keskkonna kataloogi (my-env), olenemata sellest, kus te failisüsteemis asute.
Virtuaalkeskkonnast väljumiseks võite sisestada viipale deaktiveeri ja pöördute tagasi Pythoni kogu süsteemi installimise poole. Võite märgata, et äsja installitud uusi pakette ei kuvata globaalses pipi installis.
Virtuaalkeskkonnast vabanemiseks kustutage lihtsalt mooduli käivitamise järel loodud kaust my-env. Nendest keskkondadest saate luua nii palju kui soovite.
Järeldus
Venv mooduliga on virtuaalsed keskkonnad nüüd Pythoni standardfunktsioonina saadaval, eriti kui installite Pythoni kaudu.org. Varem oli meil palju kolmandate osapoolte rakendusi nimega virtualenv, pyenv jne.
Sellest sündis üha rohkem pundunud tarkvara nagu Anaconda, mis on eriti populaarne andmeteadlaste seas. Hea, kui omate lõpuks lihtsustatud tööriista Pythoni pakettide haldamiseks, ilma et peaksite installima palju muud mitteseotud rämpsposti. Venvist saate lähemalt lugeda siit.