Programování

12 Pythonů pro každou potřebu programování

Když si pro vývoj softwaru vyberete Python, zvolíte velký jazykový ekosystém s množstvím balíčků pokrývajících všechny programovací potřeby. Ale kromě knihoven všeho od vývoje grafického uživatelského rozhraní až po strojové učení si můžete vybrat také z řady běhových modulů Pythonu - a některé z těchto běhových modulů mohou lépe vyhovovat případu použití, který máte k dispozici, než jiné.

Zde je krátká prohlídka distribucí Pythonu, od standardní implementace (CPython) po verze optimalizované pro rychlost (PyPy), pro speciální případy použití (Anaconda, ActivePython), pro různé jazykové moduly (Jython, IronPython) a dokonce i pro řezání- hranové experimentování (PyCopy, MesaPy).

CPython

CPython je referenční implementace Pythonu, standardní verze, na kterou se dívají všechny ostatní inkarnace Pythonu. CPython je napsán v jazyce C, jak vyplývá z názvu, a je produkován stejnou základní skupinou lidí odpovědných za všechna rozhodnutí na nejvyšší úrovni o jazyce Python.

Případy použití CPython

Protože CPython je referenční implementací Pythonu, je nejkonzervativnější z hlediska jeho optimalizací. Toto je záměrné. Správci Pythonu chtějí, aby CPython byl nejširší kompatibilitou a standardizovanou implementací Pythonu, která je k dispozici.

CPython je vaše nejlepší volba, když na kompatibilitě a shodě s normami Pythonu záleží víc než na hrubém výkonu a dalších obavách. CPython je také užitečný pro odborníka, který chce pracovat s Pythonem v jeho nejzákladnější inkarnaci a který je ochoten se vzdát určitých vymožeností.

Například s CPythonem musíte trochu víc zvednout nastavení virtuálních prostředí. Další distribuce (zejména Anaconda) poskytují více automatizace kolem nastavení pracovního prostoru.

CPython omezení

CPython nemá optimalizaci výkonu nalezenou v jiných vydáních Pythonu. Neexistuje žádný nativní kompilátor JIT (just-in-time), žádné zrychlené matematické knihovny a žádné doplňky třetích stran kvůli výkonu. To jsou vše, co můžete přidat sami, ale nejsou v balíčku. Opět platí, že to vše je záměrné, aby byla zajištěna maximální kompatibilita a aby CPython mohl sloužit jako referenční implementace, ale to znamená, že jakékoli optimalizace výkonu jsou na vývojáři.

CPython dále poskytuje pouze základní sadu nástrojů pro práci s Pythonem. Správce balíčků pip například získává a instaluje balíčky z nativního úložiště balíčků PyPI v Pythonu. Pip dokonce nainstaluje předkompilované binární soubory (prostřednictvím distribučního formátu kola), pokud jsou poskytnuty vývojářem, ale nenainstaluje žádné závislosti, které by balíčky mohly mít mimo PyPI.

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í.

Anaconda Python

Anaconda, vyráběná společností Anaconda, Inc. (dříve Continuum Analytics), je určena pro vývojáře Pythonu, kteří potřebují distribuci podporovanou komerčním poskytovatelem a plány podpory pro podniky. Hlavní případy použití pro Anaconda Python jsou matematika, statistika, inženýrství, analýza dat, strojové učení a související aplikace.

Anaconda Python případy použití

Anaconda sdružuje mnoho nejběžnějších knihoven používaných v komerční a vědecké práci v Pythonu - SciPy, NumPy, Numba atd. - a zpřístupňuje mnohem více z nich prostřednictvím vlastního systému správy balíčků.

Anaconda vyniká z jiných distribucí v tom, jak integruje všechny tyto kousky. Po instalaci poskytuje Anaconda desktopovou aplikaci - Anaconda Navigator -, která zpřístupňuje všechny aspekty prostředí Anaconda prostřednictvím pohodlného grafického uživatelského rozhraní. Najít komponenty, udržovat je v aktuálním stavu a pracovat s nimi je u Anacondy mnohem jednodušší než u CPythonu.

Dalším přínosem je způsob, jakým Anaconda zpracovává komponenty mimo ekosystém Pythonu, pokud jsou vyžadovány pro konkrétní balíček. The byt správce balíčků, vytvořený speciálně pro Anacondu, se stará o instalaci jak balíčků Pythonu, tak požadavků externího softwaru na třetí strany.

Anaconda Python omezení

Protože Anaconda obsahuje tolik užitečných knihoven a může instalovat ještě více pouze s několika stisknutími kláves, může být velikost instalace Anaconda mnohem větší než CPython. Základní instalace CPython běží přibližně 100 MB; Instalace Anacondy mohou růst až do gigabajtů. To může být problém v situacích, kdy máte omezení zdrojů.

Jedním ze způsobů, jak snížit stopu Anacondy, je instalace Miniconda, odizolované verze Anacondy, která zahrnuje pouze absolutní minimum kusů potřebných k uvedení do provozu. Pak můžete do Minicondy přidat balíčky, jak uznáte za vhodné, s přihlédnutím k tomu, kolik místa každý kus spotřebuje.

ActivePython

Stejně jako Anaconda je i ActivePython vytvářen a udržován neziskovou společností - v tomto případě ActiveState, která prodává řadu jazykových modulů spolu s vícejazyčným IDE Komodo.

Případy použití ActivePython

ActivePython je zaměřen na podnikové uživatele a datové vědce - lidi, kteří chtějí používat Python, ale nechtějí věnovat mnoho úsilí sestavování a správě instalace Pythonu. ActivePython používá Pythonův běžný pip správce balíčků, ale také dodává několik stovek běžných knihoven jako ověřené balíčky, spolu s některými běžnými knihovnami se závislostmi třetích stran, jako je knihovna Intel Math Kernel Library.

Omezení ActivePython

Existuje jedna potenciální nevýhoda přístupu ActivePython k manipulaci s balíčky s externími závislostmi. Pokud chcete upgradovat na novější verzi projektu se složitými závislostmi (např. TensorFlow), budete muset upgradovat také svoji instalaci ActivePython. V prostředích, kde je vývoj spojen s konkrétní verzí projektu, je to menší problém. Ale v prostředích, kde má vývoj tendenci sledovat špičkové verze, by to mohlo představovat problém.

PyPy

Nahrazení nahrazení interpretem CPython, PyPy používá kompilaci just-in-time (JIT) k urychlení provádění programů Pythonu. V závislosti na prováděném úkolu mohou být zvýšení výkonu dramatické.

Případy použití PyPy

Běžnou stížností na Python obecně a zejména na CPython je rychlost. Ve výchozím nastavení běží Python mnohokrát pomaleji než C, někdy stokrát pomaleji. PyPy JIT kompiluje kód Pythonu do jazyka stroje a poskytuje průměrně 7,7násobné zrychlení oproti CPythonu. Některé úkoly běží až 50krát rychleji.

Nejlepší na tom je, že vývojář k odemčení těchto zisků nevyžaduje téměř žádné úsilí. Vyměňte CPython za PyPy a z větší části jste hotovi.

Omezení PyPy

PyPy vždy fungoval nejlépe s „čistými“ aplikacemi Pythonu. Balíčky Pythonu, které se propojují s knihovnami C, jako je NumPy, se příliš nepovedly kvůli způsobu, jakým PyPy emuloval nativní binární rozhraní CPython. V průběhu času se však vývojáři PyPy u tohoto problému zbavili a vytvořili PyPy mnohem kompatibilnější s většinou balíčků Pythonu, které jsou závislé na příponách C. Stručně řečeno, podpora pro rozšíření C je stále omezená, ale mnohem méně, než bývala.

Další možnou nevýhodou PyPy je velikost modulu runtime. Základní runtime CPython v systému Windows, s výjimkou standardní knihovny, je kolem 4 MB, zatímco běhový modul PyPy je kolem 32 MB. Pamatujte také, že PyPy již dlouho zdůrazňoval větev 2.x Pythonu, takže například PyPy pro Python 3.x je aktuálně k dispozici pro Windows pouze v 32bitové beta-testovací verzi. (PyPy je k dispozici v 64bitových verzích pro Python 2.xa 3.x pro Linux a MacOS.)

Jython

JVM (Java Virtual Machine) slouží jako běh pro mnoho jazyků kromě Javy. Dlouhý seznam obsahuje Groovy, Scala, Clojure, Kotlin a ano, Python, prostřednictvím projektu Jython.

Případy použití Jythonu

Jython kompiluje kód Pythonu 2.x do bytecode JVM a spustí výsledný program na JVM. V některých případech bude program zkompilovaný s Jythonem běžet rychleji než jeho protějšek CPython, ale ne vždy.

Největší výhodou, kterou Jython poskytuje, je přímá interoperabilita se zbytkem ekosystému Java. Java se používá ještě častěji než Python. Spuštění Pythonu na JVM umožňuje vývojářům Pythonu proniknout do obrovského ekosystému knihoven a frameworků, které by jinak nemohli používat. Ze stejného důvodu umožňuje Jython vývojářům prostředí Java používat knihovny Pythonu.

Omezení Jythonu

Největší nevýhodou Jythonu je, že podporuje pouze větev 2.x Pythonu. Podpora pro Python 3.x je ve vývoji, ale již nějakou dobu existuje. Zatím nebylo nic uvolněno.

Všimněte si také, že zatímco Jython přináší Python na JVM, nepřináší Python na Android. Jelikož v současné době neexistuje žádný port Jythonu pro Android, nelze Jython použít k vývoji aplikací pro Android.

IronPython

Stejně jako Jython je implementace Pythonu na JVM, IronPython je implementace Pythonu na .Net runtime nebo CLR (Common Language Runtime). IronPython používá DLR (Dynamic Language Runtime) CLR, aby umožnil programům Pythonu běžet se stejnou mírou dynamiky, jakou dělají v CPythonu.

Případy použití IronPython

Stejně jako Jython je IronPython mostem. Velkým případem použití je interoperabilita mezi Pythonem a vesmírem .Net. Existující sestavy .Net lze načíst v programech IronPython pomocí nativního importu Pythonu a syntaxe manipulace s objekty. Je také možné zkompilovat kód IronPython do sestavy a spustit jej tak, jak je, nebo jej vyvolat z jiných jazyků. Všimněte si však, že k MSIL (Microsoft Intermediate Language) v sestavení nelze získat přímý přístup z jiných jazyků .Net, protože není kompatibilní se specifikací společného jazyka.

Omezení IronPython

Stejně jako Jython, IronPython aktuálně podporuje pouze Python 2.x. Probíhají však práce na vytvoření implementace IronPython 3.x.

WinPython

Jak název napovídá, WinPython je distribuce Pythonu vytvořená speciálně pro uživatele systému Microsoft Windows. Předchozí vydání CPython pro Windows nebyla dobře navržena a pro uživatele Windows bylo obtížné plně využívat ekosystém Pythonu. Vydání CPython pro Windows se časem zlepšilo, ale WinPython stále nabízí mnoho věcí, které v CPythonu nebyly nalezeny.

Případy použití WinPython

Hlavním lákadlem WinPython je, že se jedná o samostatnou edici Pythonu. Nemusí být instalován na stroji, kde běží; je třeba jej rozbalit do adresáře. Díky tomu je WinPython užitečný v případech, kdy v daném systému nelze nainstalovat software, ve scénářích, kdy je třeba distribuovat předkonfigurovaný běhový modul Pythonu spolu s aplikacemi, které se na něm mají spouštět, nebo v případě, že je potřeba spustit více edic Pythonu vedle sebe aniž by do sebe zasahovali.

WinPython také sdružuje spoustu balíčků orientovaných na datové vědy - NumPy, Pandas, SciPy, Matplotlib atd. - takže je lze ihned použít bez dalších instalačních kroků. Zahrnut je také kompilátor C / C ++, protože mnoho počítačů se systémem Windows nemá jeden zahrnutý a mnoho rozšíření Pythonu to vyžaduje nebo může využít.

Omezení WinPython

Jedním omezením WinPythonu je, že ve výchozím nastavení může pro některé případy použití obsahovat příliš mnoho. Aby to napravili, tvůrci WinPython poskytují „nulovou“ verzi každé edice WinPython, která obsahuje pouze nejmenší možnou instalaci produktu. Další balíčky lze přidat později, buď s vlastními Pythony pip nástroj nebo nástroj WinPython WPPM.

Přenosný v Pythonu

Python Portable je modul runtime CPython v samostatném balíčku. Přichází s laskavým svolením PortableDevApps kolekce podobně samostatných aplikací.

Přenosné případy použití v Pythonu

Stejně jako WinPython, Python Portable obsahuje řadu balíčků pro vědecké výpočty - Matplotlib, Numba, SymPy, SciPy, Cython a další. Stejně jako WinPython i Python Portable běží bez nutnosti formální instalace na hostiteli Windows; může žít v libovolném adresáři nebo na vyměnitelné jednotce. Zahrnuto je také Spyder IDE a Pythonův správce balíčků pipů, takže můžete balíčky podle potřeby přidávat, měnit nebo odebírat.

Přenosná omezení Pythonu

Na rozdíl od WinPython, Python Portable neobsahuje kompilátor C / C ++. Budete muset poskytnout kompilátor C, abyste mohli použít kód napsaný pomocí Cythonu (a tedy zkompilovaný do C).

Experimentální distribuce Pythonu

Tyto distribuce provádějí v Pythonu významné změny - buď proto, že používají Python jako výchozí bod pro něco úplně nového, nebo proto, že provádějí strategické změny ve standardním Pythonu. Celkově se tyto Pythony zatím nedoporučují pro produkční použití.

Pokud žijete v dohledné budoucnosti s kódovou základnou Pythonu 2.x, možná budete chtít vyzkoušet náš článek o experimentálních distribucích Pythonu, které udržují Python 2.x naživu.

MicroPython

MicroPython poskytuje minimální podmnožinu jazyka Python, která může běžet na extrémně nízkém hardwaru, jako jsou mikrokontroléry. MicroPython implementuje Python 3.4 s některými rozdíly. Je snadné napsat kód MicroPython, pokud znáte Python, ale stávající kód nemusí fungovat tak, jak je.

Pycopy