Krajta

Virtuální prostředí v Pythonu 3

Virtuální prostředí v Pythonu 3
Jako většina lidí nesnáším instalaci nepotřebných balíčků na svoji pracovní stanici. Jakmile s nimi skončíte, jejich odinstalování není nikdy dost. Balíčky po sobě zanechávají spoustu složek a souborů. Vyžadují mnoho dalších (temných) balíčků, které po sobě také zůstaly. Pomalu, ale jistě se tyto věci na vaší pracovní stanici hromadí, a přestože nemusí zabírat žádnou významnou část vašeho místa na disku, mohou způsobit další problémy.

Starší závislosti

Starší balíčky se mohou prodlévat a váš kód v Pythonu je šťastně využije. To není problém, pokud jsou vaše skripty Pythonu určeny ke spuštění lokálně, a ne pro průmyslové účely. Datoví vědci, studenti a dokonce i běžní lidé automatizující svůj každodenní úkol mohou bez většího problému stále používat starší balíčky.

Problém začíná, když odešlete kód do výroby. Je pravděpodobné, že když to uděláte, pošlete pouze svůj hlavní skript a ne všechny závislosti na balíčku. Například pokud jste napsali mikroslužbu, která má být odeslána jako funkce AWS Lambda, prvních několik řádků může importovat modul požadavku takto:

požadavek na import

Balíček požadavků dodávaný AWS lambda se bude lišit od vašeho staršího a v důsledku toho může dojít k selhání programu.

Konflikty

Konflikty mohou také přijít do obrazu, kde různé projekty používají různé verze stejného balíčku. Možná, že některé z vašich starších projektů potřebují starší pip balíčky. Možná však budete potřebovat novější balíček pro jiné projekty. Spuštěno pip install -U upgraduje balíček ve vašem operačním systému a způsobí problémy, když se vrátíte k údržbě starších projektů.

Virtuální prostředí Pythonu

Pokud používáte jakoukoli verzi Pythonu nad 3.5, můžete použít vestavěný modul s názvem venv k vytvoření takzvaných virtuálních prostředí Pythonu. Co tento modul dělá, je vytvořit izolovanou složku nebo adresář, kde mohou žít všechny vaše balíčky pip a další závislosti. Složka obsahuje také skript „aktivovat“. Kdykoli chcete použít konkrétní virtuální prostředí, jednoduše spustíte tento skript, po kterém lze přistupovat pouze k balíčkům obsaženým v této složce. Pokud spustíte pip install, balíčky se nainstalují do této složky a nikde jinde. Jakmile prostředí dokončíte, můžete jej jednoduše „deaktivovat“ a poté vám budou k dispozici pouze globální balíčky pip.

Pokud používáte Ubuntu 18.04 a vyšší, nemusíte ani instalovat správce balíčků pip v celém systému. Pip může ve vašem virtuálním prostředí existovat, pouze pokud tomu tak dáváte přednost.

Instalace venv a vytváření virtuálních prostředí

Ubuntu 18.04 LTS vychází z krabice s Pythonem 3.6.x, ale modul Python venv není nainstalován, ani pip. Nainstalujeme si jen venv.

$ apt nainstalovat python3-venv

Dále přejdeme do adresáře, ve kterém chcete vytvořit adresář virtuálního prostředí. Pro mě je to ~ / project1

$ cd ~ / project1

Vytvořte svůj venv pomocí následujícího příkazu, všimněte si, že my-env je jen název daného prostředí, můžete jej pojmenovat, jak chcete:

$ python3 -m venv můj-env

Poznámka: Některé instalace Python3, jako ty, které jsou k dispozici ve Windows, voláte interpreta Pythonu pouze pomocí pythonu a ne python3, ale to se mění ze systému na systém. Kvůli konzistenci budu používat pouze python3.

Po dokončení spuštění příkazu si všimnete nové složky ~ / project1 / my-evn. Chcete-li aktivovat virtuální prostředí my-env, budete muset:

  1. Běh,
    $ source ~ / project1 / my-env / bin / Activate pokud používáte Bash.
    Existují alternativní skripty zvané aktivovat.lovit a aktivovat.csh pro lidi, kteří používají ryby, respektive mušle csh.
  2. V systému Windows lze skript vyvolat spuštěním:
    >.\ my-env \ Skripty \ aktivovat.netopýr pokud používáte příkazový řádek, nebo,
    >.\ my-env \ Skripty \ aktivovat.ps1 pokud používáte PowerShell.

Používání virtuálních prostředí

Jakmile úspěšně spustíte skript, všimnete si, že se výzva změní na něco podobného, ​​co je zobrazeno níže, nyní můžete nainstalovat balíčky pomocí pip:

(my-env) $ pip3 požadavky na instalaci
## Instalované balíčky můžeme vypsat pomocí příkazu 'pip freeze'
(my-env) $ pip3 freeze
certifi == 2018.10.15
chardet == 3.0.4
idna == 2.7
pkg-resources == 0.0.0
žádosti == 2.20.1
urllib3 == 1.24.1

Pokud je virtuální prostředí aktivní (jak ukazuje výzva), všechny balíčky se uloží pouze do adresáře virtuálního prostředí (my-env), bez ohledu na to, kde se v systému souborů nacházíte.

Chcete-li se dostat z virtuálního prostředí, můžete do výzvy zadat deaktivovat a budete zpět k používání instalace systému Python v celém systému. Můžete si všimnout, že nové balíčky, které jsme právě nainstalovali, se v globální instalaci pip nezobrazí.

Chcete-li se zbavit virtuálního prostředí, jednoduše odstraňte složku my-env, která byla vytvořena po spuštění modulu. Můžete vytvořit tolik těchto prostředí, kolik chcete.

Závěr

S modulem venv jsou nyní virtuální prostředí k dispozici jako standardní funkce Pythonu, zvláště pokud instalujete z Pythonu.org. Dříve jsme měli mnoho implementací třetích stran zvaných virtualenv, pyenv atd.

To dalo vzniknout stále více nafouknutému softwaru, jako je Anaconda, který je obzvláště populární mezi datovými vědci. Je dobré mít konečně zjednodušující nástroj pro správu balíčků Pythonu, aniž byste museli instalovat spoustu dalších nesouvisejících haraburdí. Více o venv si můžete přečíst zde.

Hry Top 10 her k hraní na Ubuntu
Top 10 her k hraní na Ubuntu
Platforma Windows byla jednou z dominujících platforem pro hraní her kvůli velkému procentu her, které se dnes vyvíjejí, aby nativně podporovaly Windo...
Hry 5 nejlepších arkádových her pro Linux
5 nejlepších arkádových her pro Linux
V dnešní době jsou počítače vážné stroje používané k hraní her. Pokud nemůžete získat nové vysoké skóre, budete vědět, co tím myslím. V tomto příspěvk...
Hry Battle For Wesnoth 1.13.6 Vývoj uvolněn
Battle For Wesnoth 1.13.6 Vývoj uvolněn
Battle For Wesnoth 1.13.6 vydané minulý měsíc, je šestým vývojovým vydáním v 1.13.série x a přináší řadu vylepšení, zejména do uživatelského rozhraní,...