Programování

Python virtualenv a venv dělá a nedělá

Jedním z největších lákadel Pythonu je jeho rozsáhlý ekosystém balíčků třetích stran. Pokud existuje úkol, který chcete stáhnout - převod formátu souboru, škrábání a restrukturalizace webových stránek, lineární regrese, pojmenujete ji - je pravděpodobné, že jeden nebo více balíčků v indexu balíčků Pythonu splní vaši potřebu.

Nejtěžší částí je správa hromadění balíků v dané instalaci Pythonu. Je až příliš snadné bezmyšlenkovitě instalovat desítky balíčků a časem skončit v prostředí Pythonu, které je plné konfliktů mezi staršími a novějšími verzemi nástrojů, což ztěžuje práci, než je třeba.

Python je dodáván s automatizovaným systémem pro udržování místní sady balíků pro daný projekt Pythonu. Virtuální prostředí - s laskavým svolením virtualenv nástroj v Pythonu 2 a venv v Pythonu 3 - lze použít k vytvoření samostatné izolované instance běhového prostředí Pythonu pro projekt s vlastním doplňkem balíčků.

V tomto článku projdeme některými běžnými chybami, kterých se lidé při práci s virtuálními prostředími v Pythonu dopouštějí - a kterým jsou podlehli.

Používejte virtuální prostředí Pythonu

První častá chyba, kterou programátoři Pythonu dělají virtualenv nebovenv je jen se s tím neobtěžovat. Pokud vše, co děláte, je sestavování rychlého a špinavého skriptu jedna maličkost, proč se vůbec obtěžovat nastavením virtuálního prostředí?

Potíž je v tom, že „jedna maličkost“ se často ukáže mnohem, mnohem víc. Jak vaše mistrovství v Pythonu roste, nevyhnutelně skončíte přitahováním dalších modulů třetích stran, abyste mohli provádět sofistikovanější práci. A co víc, bude pro vás stále obtížnější vypořádat se se závislostmi na dřívějších verzích balíčků, což je jeden z klíčových problémů, které virtuální prostředí byla vytvořena k řešení.

Někteří lidé si při používání také pokrčí nos virtualenv nebovenv protože každé virtuální prostředí je vlastní malou kopií běhového modulu Pythonu, který zabírá přibližně 25 MB. Ale místo na disku je dnes směšně levné a odstranění virtuálního prostředí je stejně blaženě jednoduché jako odstranění jeho adresáře (žádné vedlejší účinky). Navíc, pokud máte více úkolů, které sdílejí společnou sadu balíčků, můžete pro oba vždy použít stejné virtuální prostředí.

Ke správě virtuálních prostředí Pythonu používejte virtualenvwrapper

Jedním ze způsobů, jak učinit virtuální prostředí méně zatěžující, je použitívirtualenvwrapper. Tento nástroj umožňuje spravovat všechna virtuální prostředí ve vašem pracovním prostoru z jediné centrální aplikace příkazového řádku.

Rada ohledně vytváření virtuálního prostředí: Adresář virtuálního prostředí nepojmenujtevenv—Nebo z toho důvodu název jakéhokoli jiného balíčku, který chcete použít ve virtuálním prostředí. To může mít nepředvídatelné dopady na dovoz později. Použijte název, který jednoznačně popisuje váš projekt.

Neumisťujte soubory projektu do virtuálního prostředí Pythonu

Když nastavíte virtuální prostředí, adresář, ve kterém žije, nemá pojmout nic jiného než samotné virtuální prostředí. Váš projekt patří do vlastního samostatného adresářového stromu. Existuje pro to mnoho dobrých důvodů:

  • Váš adresářový strom projektu může mít konvenci pojmenování, která koliduje s prvky virtuálního prostředí.
  • Snadný způsob, jak odebrat virtuální prostředí, je odstranit adresář. Propojení souborů projektu s virtuálním prostředím znamená, že je nejprve musíte oba oddělit.
  • Více virtuálních prostředí může používat více projektů.

Jedním ze způsobů uspořádání věcí by bylo vytvoření adresáře nejvyšší úrovně, který obsahuje různá virtuální prostředí, a jiného adresáře nejvyšší úrovně, který obsahuje projekty. Pokud jsou dva oddělené, na tom záleží.

Nezapomeňte aktivovat virtuální prostředí Pythonu

Další častou chybou, kterou lidé ve virtuálních prostředích dělají, je zapomínání na jejich aktivaci nebo neaktivace toho správného.

Než bude možné virtuální prostředí použít v konkrétní relaci prostředí, musí být aktivován, pomocí skriptu s názvem aktivovat ve virtuálním prostředí Skripty adresář. Po aktivaci je virtuální prostředí považováno za výchozí instanci Pythonu, dokud ji deaktivujete (spuštěním deaktivovat příkaz).

Nejprve je snadné na tento krok zapomenout, protože jde o zvyk, který je třeba získat, a protože aktivační skript je o jednu úroveň níže v adresáři virtuálního prostředí. Zde se hodí několik triků:

  1. Vytvořte zástupce aktivačních / deaktivačních skriptů v kořenovém adresáři projektu. Tyto zkratky můžete pojmenovat jednoduše akt a deact aby byly méně nepříjemné psát.
  2. Pro projekty, na kterých pracujete z IDE a nikoli z příkazového řádku, vytvořte spouštěč projektu - dávkový soubor nebo skript prostředí - pro danou aplikaci Python. To vám umožní zavolat aktivační skript a poté spustit vlastní skript. Obecně není nutné po spuštění deaktivovat prostředí skriptu, protože relace se stejně sama ukončí.

Tento poslední trik podtrhuje důležitý bod týkající se aktivací virtuálního prostředí: Platí pouze pro relaci prostředí, ve které běží. Například pokud spustíte dvě relace příkazového řádku a aktivujete virtuální prostředí v jedné, druhá relace příkazového řádku použije výchozí instalace systému Python, nikoli virtuální prostředí. Neaktivujete virtuální prostředí pro systém jako celek, ale pouze pro konkrétní relaci.

Nepoužívejte>= pro připnutí verze balíčku ve virtuálním prostředí Pythonu

Tento tip je užitečný i mimo virtuální prostředí. Když máte aplikaci s a requirements.txt soubor, měli byste specifikovat balíčky s přesný číslo verze. Říci mypackage == 2.2, ne mypackage> = 2.2.

Zde je důvod. Jedním z hlavních důvodů použití virtuálního prostředí je zajistit použití konkrétních verzí balíčků. Pokud používáte >= namísto ==, neexistuje žádná záruka, že vy - nebo někdo jiný - skončíte se stejnou verzí, pokud bude nutné pro daný projekt znovu vytvořit prostředí. Použijte přesné číslo verze. Vy, budoucnost vy a kdokoli jiný, kdo přijde po vás, vám poděkuje.

$config[zx-auto] not found$config[zx-overlay] not found