V tomto článku se podíváme na to, jak začít s používáním virtuálních prostředí v jazyce Python, a to jak v operačním systému Windows, tak i v Linuxu.
Při práci na více projektech ve vašem lokálním vývojovém prostředí se často setkáte s komplikacemi ohledně závislostí. Vytváření virtuálních prostředí pro každý z vašich projektů vám může pomoci lépe organizovat závislosti a požadavky projektu.
Abychom mohli využít všechny výhody virtuálních prostředí v Pythonu, naučíme se, jak je vytvářet a aktivovat. 👩🏽💻
Co jsou to virtuální prostředí?
Virtuální prostředí jsou oddělené a nezávislé prostory, které obsahují kód projektu a všechny jeho závislosti.
Ale proč vlastně používat virtuální prostředí?
Virtuální prostředí vám umožňují instalovat a používat různé verze stejných knihoven pro různé projekty. Používání virtuálních prostředí také zajišťuje, že nedojde ke konfliktům, když dva nebo více projektů využívá odlišné verze. Podívejme se na to detailněji.
Instalace balíčků v Pythonu
Standardní knihovna Pythonu obsahuje řadu užitečných modulů pro testování jednotek, interakci s operačním systémem, práci s daty a časy a další.
Při práci na projektech Pythonu však budete často potřebovat instalovat další balíčky, které vyvinula komunita Pythonu. To platí zejména pro aplikace, jako je web scraping pro sběr dat, strojové učení a webové aplikace.
K instalaci a správě těchto balíčků můžete použít nástroje jako conda nebo pip.
Každý projekt obvykle vyžaduje specifickou sadu balíčků, které je nutné instalovat. Nicméně, když nainstalujete všechny balíčky do svého vývojového prostředí na lokálním počítači, všechny projekty sdílejí globálně nainstalované balíčky.
Proč to může být problém?
Ve svém vývojovém prostředí můžete mít nainstalovaných spoustu balíčků. Projekt, na kterém aktuálně pracujete, ale může vyžadovat pouze malou část z nich. Pokud všechny vaše projekty sdílejí společné instalace, je velmi náročné určit, který z projektů vyžadoval který nainstalovaný balíček – tedy závislosti spojené s každým projektem.
Tento přístup má další omezení. Představte si, že máte v knihovně projektů projekt využívající Django 2.2. Rozhodnete se začít pracovat na novém projektu, který používá Django 4. Proto nainstalujete nejnovější verzi Djanga do stejného vývojového prostředí.
Co se stane se stávající instalací?
Je odstraněna a nahrazena novou verzí Django, kterou jste nainstalovali. U novějších verzí mohly být některé funkce zastaralé. A vaše dřívější projekty Django nemusí fungovat správně.
Shrneme-li dosavadní diskusi: správa závislostí se stává složitou, když jsou všechny balíčky nainstalovány ve společném prostředí, protože projekty potřebují k běhu vlastní sady knihoven.
Jak fungují virtuální prostředí?
Probrali jsme si problémy spojené s instalací balíčků v globálním vývojovém prostředí (systémové instalace). To nás vede k pochopení, jak virtuální prostředí toto omezení řeší.
Když vytvoříte a aktivujete virtuální prostředí pro své projekty Python, můžete instalovat pouze ty balíčky, které jsou nutné pro daný projekt.
Vrátíme-li se k příkladu projektů Django, s virtuálními prostředími můžete spouštět projekty Django 2.2 i Django 4 bez jakéhokoli konfliktu. Důvodem je, že instalace Djanga již nejsou systémové, ale jsou ohraničeny virtuálním prostředím příslušných projektů.
V podstatě platí, že virtuální prostředí jsou izolované prostory, které obsahují jak kód, tak závislosti pro daný projekt.
Výhody virtuálních prostředí
Nyní, když víte, jak virtuální prostředí v Pythonu fungují, pojďme si shrnout výhody jejich používání:
- Virtuální prostředí poskytují izolované vývojové prostředí pro každý projekt, což nám umožňuje instalovat pouze balíčky, které jsou pro daný projekt potřebné.
- Vzhledem k tomu, že virtuální prostředí projektů jsou nezávislá a izolovaná, různé projekty mohou používat různé verze stejné knihovny – v závislosti na potřebách projektu. S virtuálními prostředími se nemusíte starat o systémová oprávnění k instalaci knihoven a nastavení vývojového prostředí.
- Jakmile nainstalujete balíčky do virtuálního prostředí, můžete zaznamenat závislosti projektu do souboru requirements.txt. To umožňuje ostatním vývojářům replikovat vývoj a prostředí projektu a instalovat požadované balíčky pomocí jediného příkazu.
Zatím jste se dozvěděli, jak virtuální prostředí fungují a jaké jsou výhody jejich používání. Nyní se podíváme na některé oblíbené nástroje, které můžete použít k vytváření a správě virtuálních prostředí v Pythonu.
#1. Virtualenv
Virtualenv je jedním z nejrozšířenějších nástrojů pro tvorbu a správu virtuálních prostředí pro projekty v Pythonu. Určitá podmnožina funkcí nástroje virtualenv je k dispozici v balíčku venv. Nicméně balíček virtualenv je rychlejší a více rozšiřitelný než venv.
#2. Pipenv
S nástrojem pipenv získáte jak funkce virtuálního prostředí virtualenv, tak i možnosti správy balíčků nástroje pip. Využívá pipfiles pro správu závislostí projektu uvnitř virtuálního prostředí.
Pipenv si můžete vyzkoušet přímo v prohlížeči na tomto hřišti Pipenv.
#3. Conda
Pokud pro vývoj používáte distribuci Anaconda Python, můžete použít conda pro správu balíčků i pro vytváření virtuálních prostředí.
Chcete-li se dozvědět více, podívejte se na tento komplexní průvodce správou prostředí pomocí conda.
#4. Poetry
Poetry je nástroj pro správu balíčků, který vám umožňuje spravovat závislosti napříč všemi vašimi projekty v Pythonu. Pro zahájení práce s nástrojem Poetry musíte mít nainstalovaný Python 3.7 nebo novější.
#5. Venv
Jak již bylo zmíněno, venv nabízí podmnožinu funkcí nástroje virtualenv, ale má výhodu, že je zabudován do standardní knihovny Pythonu od verze 3.3.
Je snadno dostupný s instalací Pythonu a nevyžaduje instalaci žádných externích balíčků. V tomto tutoriálu jej použijeme k vytváření a práci s virtuálními prostředími. ✅
Jak vytvořit virtuální prostředí v Pythonu na Ubuntu
💬 Abychom mohli pokračovat v tomto tutoriálu, musíte mít lokální instalaci Pythonu 3. Ujistěte se, že používáte Python 3.5 nebo novější verzi.
V této části si ukážeme, jak vytvořit a aktivovat virtuální prostředí na počítači s Ubuntu Linux. Stejné kroky lze použít i pro jiné distribuce Linuxu.
Pro snazší organizaci si vytvořte adresář pro váš projekt a přepněte se do něj. V tomto adresáři vytvoříme venv.
$ mkdir my_project $ cd my_project
Obecná syntaxe pro vytvoření virtuálního prostředí pro váš projekt Python je python3 -m venv <název-venv-nebo-cesta>. Po spuštění tohoto příkazu se v aktuálním pracovním adresáři vytvoří virtuální prostředí s názvem my_env:
$ python3 -m venv my_env
Jak aktivovat a instalovat balíčky ve virtuálním prostředí
Po vytvoření virtuálního prostředí jej můžete aktivovat a instalovat do něj potřebné balíčky. Pro aktivaci virtuálního prostředí můžete spustit následující příkaz:
$ source my_env/bin/activate
Jakmile aktivujete virtuální prostředí, můžete spustit příkaz pip list a získat seznam nainstalovaných balíčků:
$ pip list
Zatím jsme nenainstalovali žádné další balíčky, takže byste měli vidět pouze setuptools a pip, které jsou nainstalovány ve výchozím stavu v každém virtuálním prostředí.
Instalace pip do virtuálního prostředí vám umožňuje instalovat balíčky, které potřebujete pro konkrétní projekt. Díky tomu máte pro každý projekt nezávislé vývojové prostředí.
Nyní, když jste aktivovali virtuální prostředí, můžete do něj pomocí nástroje pip nainstalovat balíčky specifické pro daný projekt. Jako příklad si nainstalujeme requests, jeden z nejpoužívanějších balíčků v Pythonu, který poskytuje řadu funkcí pro odesílání HTTP požadavků pro práci s webovými rozhraními API.
$ pip install requests
Po instalaci knihovny requests uvidíte, že se nainstaluje spolu se všemi balíčky, které vyžaduje.
$ pip list
Můžete použít příkaz pip freeze a přesměrovat výstup do souboru requirements.txt, jak je ukázáno níže:
$ pip freeze > requirements.txt
Pokud se podíváte na obsah aktuálního adresáře projektu, uvidíte, že se vytvořil soubor requirements.txt.
$ ls # my_env requirements.txt
Po dokončení práce na projektu můžete virtuální prostředí deaktivovat spuštěním následujícího příkazu:
$ deactivate
Jak vytvořit virtuální prostředí v Pythonu na Windows
Pro vývoj se obecně upřednostňuje prostředí Linux. Pokud používáte počítač se systémem Windows, můžete zvážit použití podsystému Windows pro Linux (WSL) pro nastavení terminálového prostředí Ubuntu pro lokální vývoj.
Pokud pracujete na počítači se systémem Windows, můžete použít Windows PowerShell nebo příkazový řádek a vytvořit virtuální prostředí pomocí následujícího příkazu:
> python -m venv <cesta-k-venv>
Jak aktivovat virtuální prostředí
Aktivace virtuálního prostředí na počítači se systémem Windows se liší v závislosti na tom, zda pracujete v příkazovém řádku nebo v prostředí Windows PowerShell.
Pokud pracujete v příkazovém řádku, aktivujte virtuální prostředí spuštěním následujícího příkazu:
> <cesta-k-venv>Scriptsactivate.bat
Pokud naopak používáte Windows PowerShell, aktivujete virtuální prostředí spuštěním tohoto příkazu:
> <cesta-k-venv>ScriptsActivate.ps1
Nyní můžete do virtuálního prostředí instalovat všechny potřebné balíčky.
Pro deaktivaci virtuálního prostředí můžete spustit příkaz deactivate – a to jak v příkazovém řádku, tak i v prostředí Windows PowerShell.
Závěr
V tomto článku jsme se bavili o omezeních celosystémových instalací a o tom, jak komplikují správu závislostí v projektech Pythonu. Virtuální prostředí v Pythonu poskytují způsob, jak lépe spravovat závislosti a zároveň poskytují izolované vývojové prostředí pro jednotlivé projekty.
Mezi široce používanými nástroji pro vytváření a správu virtuálních prostředí v Pythonu jsme se naučili používat venv – který je zabudován do standardní knihovny Pythonu pro vytváření a aktivaci virtuálních prostředí.
Uvnitř vyhrazeného virtuálního prostředí projektu lze nainstalovat verze knihoven specifické pro daný projekt. Tyto požadavky mohou být poté zaznamenány v souboru requirements.txt, což ostatním vývojářům umožní snadno replikovat prostředí projektu.
Až budete spouštět váš další projekt v Pythonu, nezapomeňte použít virtuální prostředí pro lepší správu závislostí. Příjemné kódování!🎉