Vecākas atkarības
Vecāki iepakojumi var kavēties, un jūsu Python kods tos ar prieku izmantos. Tā nav problēma, ja jūsu Python skripti ir domāti darbībai lokāli, nevis rūpnieciskiem mērķiem. Datu zinātnieki, studenti un pat regulāri cilvēki, kas automatizē ikdienas uzdevumus, var vienkārši turpināt izmantot vecākas pakotnes bez lielām problēmām.
Problēma sākas, nosūtot kodu uz ražošanu. To darot, iespējams, jūs vienkārši nosūtīsit galveno skriptu, nevis visas pakotnes atkarības. Piemēram, ja esat uzrakstījis mikropakalpojumu, kas nosūtāms kā AWS Lambda funkcija, dažas pirmās rindas var importēt pieprasījuma moduli šādi:
importa pieprasījumsPieprasījumu pakete, ko piegādāja AWS lambda, atšķirsies no vecākās, un tā rezultātā programma var avarēt.
Konflikti
Konflikti var parādīties arī tad, ja dažādos projektos tiek izmantotas dažādas vienas paketes versijas. Varbūt dažiem no jūsu vecākiem projektiem ir nepieciešamas vecākas paketes. Bet jums var būt nepieciešama jaunāka pakete citiem projektiem. Darbojas PIP instalēšana -U
Python virtuālās vides
Ja izmantojat jebkuru Python versiju virs 3.5, jūs varat izmantot iebūvēto moduli ar nosaukumu venv, lai izveidotu tā sauktās Python virtuālās vides. Šis modulis ir izveidot izolētu mapi vai direktoriju, kurā var dzīvot visas jūsu paketes un citas atkarības. Mapē ir arī 'aktivizēt' skripts. Ikreiz, kad vēlaties izmantot noteiktu virtuālo vidi, vienkārši palaidiet šo skriptu, pēc kura var piekļūt tikai šajā mapē esošajiem pakotnēm. Ja palaidīsit pip install, pakotnes tiks instalētas šajā mapē un nekur citur. Kad esat pabeidzis vides lietošanu, varat to vienkārši "deaktivizēt", un tad jums būs pieejamas tikai globālās pip paketes.
Ja izmantojat Ubuntu 18.04 un vairāk, jums pat nav jāinstalē pip pakotņu pārvaldnieks visā jūsu sistēmā. Pip var pastāvēt jūsu virtuālajā vidē tikai tad, ja jūs to vēlaties.
Venv instalēšana un virtuālās vides izveide
Ubuntu 18.04 LTS nāk no kastes kopā ar Python 3.6.x, bet Python venv modulis nav instalēts, tāpat nav arī pip. Uzstādīsim tikai venv.
$ apt instalējiet python3-venvPēc tam mēs ejam uz direktoriju, kurā vēlaties izveidot virtuālās vides direktoriju. Man tas ir ~ / project1
$ cd ~ / project1Izveidojiet savu venv ar šādu komandu, ievērojiet, ka my-env ir tikai šīs vides nosaukums, un jūs to varat nosaukt kā vien vēlaties:
$ python3 -m venv my-envPiezīme: Dažas Python3 instalācijas, piemēram, Windows sistēmā pieejamās, jūs izsaucat Python tulku, izmantojot tikai python, nevis python3, bet tas mainās no sistēmas uz citu. Konsekvences labad es izmantošu tikai python3.
Pēc komandas izpildes pabeigšanas pamanīsit jaunu mapi ~ / project1 / my-evn. Lai aktivizētu virtuālo vidi my-env, jums būs jāveic:
- Palaist,
$ source ~ / project1 / my-env / bin / activ
ja lietojat Bash.
Ir alternatīvi skripti, kurus sauc par aktivizēt.zivis un aktivizēt.csh cilvēkiem, kas attiecīgi lieto zivis un csh čaumalas. - Operētājsistēmā Windows skriptu var izsaukt, palaižot:
>.\ my-env \ Scripts \ aktivizēt.sikspārnis
ja izmantojat komandu uzvedni, vai,>.\ my-env \ Scripts \ aktivizēt.ps1
ja izmantojat PowerShell.
Virtuālās vides izmantošana
Kad skripts būs veiksmīgi palaists, pamanīsit, ka uzvedne mainās uz kaut ko līdzīgu zemāk redzamajam, tagad jūs varat instalēt paketes, izmantojot pip:
(my-env) $ pip3 instalēšanas pieprasījumi## Mēs varam uzskaitīt instalētās paketes, izmantojot komandu 'pip freeze'
(my-env) $ pip3 iesaldē
sertifikāts == 2018.10.15
chardet == 3.0.4
idna == 2.7
pkg-resources == 0.0.0
pieprasījumi == 2.20.1
urllib3 == 1.24.1
Kamēr virtuālā vide ir aktīva (kā norādīts uzvednē), visas paketes tiks saglabātas tikai virtuālās vides direktorijā (my-env) neatkarīgi no tā, kur atrodaties failu sistēmā.
Lai izkļūtu no virtuālās vides, uzvednē varat ierakstīt deaktivizēt, un jūs atkal izmantosiet visas sistēmas Python instalēšanu. Jūs varat pamanīt, ka tikko instalētās jaunās pakotnes netiks rādītas globālajā pip instalācijā.
Lai atbrīvotos no virtuālās vides, vienkārši izdzēsiet mapi my-env, kas tika izveidota pēc moduļa palaišanas. Jūs varat izveidot tik daudz no šīm vidēm, cik vēlaties.
Secinājums
Izmantojot venv moduli, virtuālās vides tagad ir pieejamas kā Python standarta funkcija, it īpaši, ja instalējat no Python.org. Iepriekš mums bija daudz trešo pušu realizāciju, ko sauc par virtualenv, pyenv utt.
Tas radīja arvien vairāk uzpūstas programmatūras, piemēram, Anaconda, kas ir īpaši populāra datu zinātnieku vidū. Ir labi, ja beidzot ir pieejams vienkāršots rīks Python pakotņu pārvaldīšanai, neinstalējot daudz citu nesaistītu nevēlamu saturu. Vairāk par venv varat lasīt šeit.