Python

Navidezna okolja v Pythonu 3

Navidezna okolja v Pythonu 3
Kot večina ljudi tudi jaz sovražim nameščanje nepotrebnih paketov na svojo delovno postajo. Ko končate z njimi, odstranitve ni več dovolj. Paketi za seboj puščajo tone map in datotek. Potrebujejo številne druge (nejasne) pakete, ki so prav tako ostali za nami. Te stvari se počasi, a zanesljivo kopičijo na vaši delovni postaji, in čeprav morda ne bodo zasedele nobenega pomembnega dela prostora na disku, lahko povzročijo druge težave.

Starejše odvisnosti

Starejši paketi se lahko zadržujejo in vaša koda Python jih bo z veseljem uporabila. To ni težava, če naj bi bili vaši skripti Python nameščeni lokalno in ne za industrijske namene. Podatkovni znanstveniki, študentje in celo običajni ljudje, ki avtomatizirajo svoje vsakdanje naloge, lahko preprosto nadaljujejo z uporabo starejših paketov.

Težava se začne, ko pošljete kodo v proizvodnjo. Ko to storite, boste verjetno poslali samo svoj glavni skript in ne vse odvisnosti od paketa. Če ste na primer napisali mikrostoritev, ki bo poslana kot funkcija AWS Lambda, bo prvih nekaj vrstic morda uvozilo modul zahteve, kot je ta:

zahteva za uvoz

Paket zahtev, ki ga je priskrbel lambda AWS, se bo razlikoval od vašega starejšega, zato se lahko program sesuje.

Konflikti

Konflikti se lahko pojavijo tudi tam, kjer različni projekti uporabljajo različne različice istega paketa. Mogoče nekateri starejši projekti potrebujejo starejše pakete pip. Vendar boste morda potrebovali novejši paket za druge projekte. Zagon pip install -U bo nadgradil paket na vaš operacijski sistem in povzročil težave, ko se boste vrnili k vzdrževanju starejših projektov.

Navidezna okolja Python

Če uporabljate katero koli različico Pythona nad 3.5 lahko z vgrajenim modulom, imenovanim venv, ustvarite tako imenovana navidezna okolja Python. Ta modul ustvari izolirano mapo ali imenik, v katerem lahko živijo vsi vaši paketi pip in druge odvisnosti. Mapa vsebuje tudi skript za aktiviranje. Kadar želite uporabiti določeno navidezno okolje, preprosto zaženete ta skript, po katerem je mogoče dostopati samo do paketov, ki jih vsebuje ta mapa. Če zaženete pip install, bodo paketi nameščeni znotraj te mape in nikjer drugje. Ko končate z uporabo okolja, ga lahko preprosto 'deaktivirate' in takrat vam bodo na voljo samo globalni pip paketi.

Če uporabljate Ubuntu 18.04 in novejši, vam niti ni treba namestiti upravitelja paketov pip v celotnem sistemu. Pip lahko obstaja v vašem navideznem okolju le, če vam je tako bolj všeč.

Namestitev venv in ustvarjanje navideznih okolij

Ubuntu 18.04 LTS prihaja iz škatle s Pythonom 3.6.x, vendar modul Python venv ni nameščen niti pip. Namestimo samo venv.

$ apt namestite python3-venv

Nato gremo v imenik, v katerem želite ustvariti svoj imenik navideznega okolja. Zame je ~ / project1

$ cd ~ / projekt1

Ustvari svoj venv z naslednjim ukazom, opazi, da je my-env samo ime tega okolja, lahko ga poimenuješ, kot želiš:

$ python3 -m venv my-env

Opomba: Nekatere namestitve Python3, na primer tiste, ki so na voljo v sistemu Windows, pokličete tolmač Python z uporabo samo python in ne python3, vendar se to spreminja od sistema do sistema. Zaradi doslednosti bom uporabljal samo python3.

Ko je ukaz končan, boste opazili novo mapo ~ / project1 / my-evn. Če želite aktivirati virtualno okolje my-env, boste morali:

  1. Teči,
    $ source ~ / project1 / my-env / bin / activate če uporabljate Bash.
    Obstajajo alternativni skripti, imenovani activate.ribe in aktiviraj.csh za ljudi, ki uporabljajo ribe oziroma lupine csh.
  2. V operacijskem sistemu Windows lahko skript prikličete tako, da zaženete:
    >.\ my-env \ Scripts \ activate.netopir če uporabljate ukazni poziv, ali,
    >.\ my-env \ Scripts \ activate.ps1 če uporabljate PowerShell.

Uporaba navideznih okolij

Ko boste skript uspešno zagnali, boste opazili, da se poziv spremeni v nekaj takega, kot je prikazano spodaj, zdaj lahko pakete namestite s pomočjo pip:

(my-env) $ pip3 zahteve za namestitev
## Nameščene pakete lahko navedemo z ukazom 'pip freeze'
(my-env) $ pip3 zamrzne
certifi == 2018.10.15
chardet == 3.0.4
idna == 2.7
pkg-resources == 0.0.0
zahteve == 2.20.1
urllib3 == 1.24.1

Dokler je navidezno okolje aktivno (kot kaže poziv), bodo vsi paketi shranjeni samo v imeniku navideznega okolja (my-env), ne glede na to, kje ste v datotečnem sistemu.

Če želite izstopiti iz navideznega okolja, lahko v poziv vtipkate deaktiviraj in vrnili se boste k uporabi sistemske namestitve Pythona. Opazite lahko, da novi paketi, ki smo jih pravkar namestili, ne bodo prikazani v globalni namestitvi pipa.

Če se želite znebiti navideznega okolja, preprosto izbrišite mapo my-env, ki je bila ustvarjena po zagonu modula. Ta okolja lahko ustvarite poljubno.

Zaključek

Z modulom venv so navidezna okolja zdaj na voljo kot standardna značilnost Pythona, še posebej, če nameščate iz Pythona.org. Prej smo imeli veliko implementacij tretjih oseb, imenovanih virtualenv, pyenv itd.

To je povzročilo vedno več napihnjene programske opreme, kot je Anaconda, še posebej priljubljena med podatkovnimi znanstveniki. Dobro je imeti končno poenostavljeno orodje za upravljanje paketov Python, ne da bi morali namestiti veliko drugih nepovezanih neželenih vsebin. Več o venv si lahko preberete tukaj.

Srednji gumb miške ne deluje v sistemu Windows 10
The srednji gumb miške vam pomaga, da se pomikate po dolgih spletnih straneh in zaslonih z veliko podatkov. Če se to ustavi, boste na koncu uporabili ...
Kako spremeniti levi in ​​desni gumb miške na računalniku z operacijskim sistemom Windows 10
Povsem normalno je, da so vse naprave računalniške miške ergonomsko zasnovane za desničarje. Na voljo pa so miške, ki so posebej zasnovane za levičarj...
Posnemajte klike miške tako, da v Windows 10 lebdite z miško Clickless Mouse
Uporaba miške ali tipkovnice v napačni drži čezmerne uporabe lahko povzroči veliko zdravstvenih težav, vključno s sevom, sindromom karpalnega kanala i...