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 importBalíč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
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-venvDále přejdeme do adresáře, ve kterém chcete vytvořit adresář virtuálního prostředí. Pro mě je to ~ / project1
$ cd ~ / project1Vytvoř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-envPozná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:
- 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. - 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.