Programování

Virtualenv a venv: Vysvětlení virtuálních prostředí Pythonu

Ze všech důvodů, proč je Python hitem vývojářů, je jedním z největších jeho široký a stále se rozšiřující výběr balíčků třetích stran. Pohodlné sady nástrojů pro vše od příjmu a formátování dat až po vysokorychlostní matematiku a strojové učení jsou jen import nebo pip install pryč.

Co se ale stane, když si tyto balíčky navzájem nehrají pěkně? Co děláte, když různé projekty v Pythonu potřebují konkurenční nebo nekompatibilní verze stejných doplňků? Právě tam vstupují do hry virtuální prostředí Pythonu.

Můžete vytvářet a pracovat s virtuálními prostředími jak v Pythonu 2, tak v Pythonu 3, i když nástroje se liší. Virtualenv je nástroj volby pro Python 2, zatímco venv zpracovává úkol v Pythonu 3.

Co jsou virtuální prostředí Pythonu?

Virtuální prostředí je způsob, jak mít více paralelních instancí interpreta Pythonu, každá s různými sadami balíčků a různými konfiguracemi. Každé virtuální prostředí obsahuje diskrétní kopii tlumočníka Pythonu, včetně kopií jeho obslužných programů.

Balíčky nainstalované v každém virtuálním prostředí se zobrazují pouze v tomto virtuálním prostředí a v žádném jiném. Dokonce i velké, složité balíčky s binárními soubory závislými na platformě lze ve virtuálních prostředích navzájem koralovat.

Existuje několik běžných případů použití pro virtuální prostředí:

  1. Vyvíjíte více projektů, které závisí na různých verzích stejných balíčků, nebo máte projekt, který musí být izolován od určitých balíčků kvůli kolizi oboru názvů. Toto je nejstandardnější případ použití.
  2. Pracujete v prostředí Pythonu, kde nemůžete upravit adresář balíčků webů. Může to být proto, že pracujete ve vysoce kontrolovaném prostředí, jako je spravovaný hosting, nebo na serveru, kde výběr tlumočníka (nebo balíků v něm použitých) nelze změnit z důvodu produkčních požadavků.
  3. Chcete experimentovat s konkrétní kombinací balíčků za vysoce kontrolovaných okolností, například k testování křížové kompatibility nebo zpětné kompatibility.
  4. Chcete spustit „základní“ verzi překladače Pythonu v systému bez balíčků třetích stran a podle potřeby nainstalovat pouze balíčky třetích stran pro každý jednotlivý projekt.

Nic neříká, že nemůžete jednoduše rozbalit knihovnu Pythonu do podsložky projektu a použít ji tak. Podobně si můžete stáhnout samostatnou kopii tlumočníka Pythonu, rozbalit ji do složky a použít ji ke spouštění skriptů a balíčků k tomu určených.

Správa takových dlážděných projektů se ale brzy stane obtížnou. Jen to zdá se jednodušší to udělat zpočátku. Práce s balíčky, které mají binární komponenty nebo se spoléhají na komplikované závislosti třetích stran, může být noční můrou. Nejlepším dlouhodobým řešením je použití nativních mechanismů Pythonu pro vytváření a práci s virtuálními prostředími.

Virtuální prostředí v Pythonu 3

Virtualenv se ukázal jako nepostradatelný pro nespočet vývojářů Pythonu, ale není součástí standardní knihovny Pythonu. Python 3 má nativní nástroje pro virtuální prostředí, díky nimž je celý proces docela jednoduchý.

Související video: Jak Python usnadňuje programování

Perfektní pro IT, Python zjednodušuje mnoho druhů práce, od automatizace systému až po práci v nejmodernějších oborech, jako je strojové učení.

Vytvořte virtuální prostředí

Chcete-li vytvořit virtuální prostředí v daném adresáři, zadejte:

python3 -m venv / cesta / do / adresáře

(Všimněte si, že stačí použítkrajta namísto python3 pokud váš systém rozpozná krajta jako výchozí překladač Pythonu 3.)

Celý proces nastavení virtuálního prostředí může trvat minutu nebo dvě. Po dokončení byste měli mít adresář s několika podadresáři. Nejdůležitějším podadresářem jezásobník na Unixu neboSkripty ve Windows, kde najdete kopii interpretu Pythonu pro virtuální prostředí spolu s jeho obslužnými programy.

Všimněte si, že protože každé virtuální prostředí obsahuje vlastní kopii interpretu Pythonu, může být poměrně velké. Ve Windows i Linux bude virtuální prostředí Pythonu 3.6 spotřebovávat asi 23 MB místa na disku.

Aktivujte virtuální prostředí

Než budete moci toto virtuální prostředí používat, musíte to explicitně provést aktivovat to. Díky aktivaci je virtuální prostředí výchozím interpretem Pythonu po dobu trvání relace.

K aktivaci virtuálního prostředí budete muset použít jinou syntaxi podle toho, jaký operační systém a příkazový shell používáte.

  • V systému Unix nebo MacOS pomocí prostředí bash: zdroj / cesta / do / venv / bin / aktivovat
  • V systému Unix nebo MacOS pomocí prostředí csh: source /path/to/venv/bin/activate.csh
  • V systému Unix nebo MacOS pomocí mušle: source /path/to/venv/bin/activate.fish
  • V systému Windows pomocí příkazového řádku:cesta \ k \ venv \ Skripty \ activ.bat
  • V systému Windows pomocí prostředí PowerShell: cesta \ k \ venv \ Skripty \ Activate.ps1

Všimněte si, že aktivované prostředí funguje pouze pro kontext, ve kterém byl aktivován. Například pokud spustíte dvě instance prostředí PowerShell, A a B, a aktivujete pouze virtuální prostředí v instanci A, bude se toto prostředí vztahovat pouze na A. Nepoužilo by se to nikde jinde.

Nakonfigurujte a používejte virtuální prostředí

Jakmile aktivujete nové virtuální prostředí, můžete k jeho přidání a změně balíků použít správce balíčků pip. Piper najdete v Skripty podadresář virtuálního prostředí ve Windows a ve Windows zásobník podadresář v operačních systémech Unix.

Pokud jste již obeznámeni s tím, jak pip funguje, jste připraveni. Ve virtuálním prostředí by to mělo být stejné. Jen se ujistěte, že používáte instanci pip, která spravuje balíčky pro virtuální prostředí v kontextu, kde byla aktivována - např. Relace bash nebo relace Windows CLI / PowerShell. Pokud chcete ověřit, že používáte správný pip a správné virtuální prostředí, zadejte pip -V a zkontrolujte, zda cesta, kterou zobrazuje, směřuje do podadresáře vašeho virtuálního prostředí.

Chcete-li použít virtuální prostředí, které jste vytvořili, ke spouštění skriptů Pythonu, jednoduše vyvolajte Python z příkazového řádku v kontextu, kde jste jej aktivovali.

Deaktivace virtuálního prostředí

Až virtuální prostředí dokončíte, můžete relaci ukončit tam, kde jste jej používali. Pokud chcete pokračovat v práci v prostředí, ale místo toho s výchozím interpretem Pythonu, zadejte deaktivovat na výzvu. Uživatelé systému Windows na příkazovém řádku je třeba spustit deaktivovat.bat z Skripty podadresář, ale uživatelé systému Unix a uživatelé systému Windows se systémem PowerShell mohou jednoduše psát deaktivovat v libovolném adresáři.

Odebrání virtuálního prostředí

Virtuální prostředí jsou samostatná. Pokud již virtuální prostředí nepotřebujete, můžete jednoduše odstranit jeho adresář.

Virtuální prostředí v Pythonu 2

S Pythonem 2 nejsou virtuální prostředí nativní funkcí jazyka. Místo toho musíte instalovat knihovny třetích stran, abyste mohli vytvářet a spravovat virtuální prostředí.

Nejpopulárnějším a nejpoužívanějším z těchto projektů je virtualenv, který zpracovává vytváření adresářové struktury a kopírování potřebných souborů do virtuálního prostředí. Chcete-li nainstalovat virtualenv, stačí použít pip install virtualenv. Chcete-li s ním vytvořit adresář virtuálního prostředí, zadejte adresář virtualenv / cesta / do /. Aktivace a deaktivace virtuálního prostředí funguje stejně jako u virtuálních prostředí v Pythonu 3 (viz výše).

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

Pokud používáte notebooky Jupyter (aka notebooky IPython) a již máte Jupyter nainstalovaný v celém systému, vytvořte si virtuální prostředí a aktivujte ho. Potom z adresáře virtuálního prostředí spusťte pip nainstalujte ipykernel přidat potřebné komponenty pro IPython. Nakonec spusťte instalace jádra ipython — uživatel — jméno =, kde project_name je název, který chcete spojit s konkrétním projektem. Odtud byste měli být schopni spustit Jupyter a přepnout na jádro IPython, které jste nainstalovali ve virtuálním prostředí.