9 nejlepších Python Frameworks pro vytváření malých až podnikových aplikací
Python se jeví jako všestranný nástroj, který se může proměnit jak v hravou pomůcku, tak i v mocný nástroj pro náročné úlohy. Tato flexibilita se odráží v široké škále aplikací, pro které se Python používá.
Python si oblíbili jak nadšenci, tak i odborníci z vědecké sféry a architekti softwarových systémů.
Začátky s Pythonem jsou poměrně snadné, díky jeho abstrakcím vyšší úrovně a možnostem metaprogramování, které umožňují vytvářet rozsáhlé a komplexní systémy. Navíc disponuje rozsáhlou knihovnou, která umožňuje realizovat téměř jakýkoli úkol. I když má svá omezení, například v oblasti souběžného zpracování a silného typování, lze je překonat.
V tomto článku prozkoumáme několik špičkových frameworků Pythonu, které jsou vhodné pro vývoj webových aplikací, od malých projektů až po rozsáhlá podniková řešení.
Django
Framework Django se etabloval jako první volba pro webové aplikace v komunitě Pythonu. Pokud byste měli vývojáře v Pythonu probudit ze spánku a donutit ho pod pohrůžkou vytvořit webovou aplikaci, s největší pravděpodobností by sáhl po Django, stejně jako by vývojář v Ruby zvolil Rails.
A má k tomu dobrý důvod. Django, jak napovídá slogan, je „webový framework pro perfekcionisty s termíny“. Je to takzvaný framework „s bateriemi“, který poskytuje všechny běžné funkce ihned po instalaci.
Díky těmto předpřipraveným funkcím Django výrazně zkracuje dobu vývoje:
- Intuitivní a uživatelsky přívětivé ORM s migracemi, které jsou automaticky vytvářeny a aplikovány.
- Funkce pro automatické generování administrátorského panelu na základě vašich modelů.
- Podpora pro cookies, relace, middleware, šablony a další.
- Automatické aplikace bezpečnostních opatření, jako je ochrana proti XSS a CSRF.
- Kompatibilita s prakticky všemi databázemi (snadno se najdou adaptéry i pro databáze bez oficiální podpory).
- Prvotřídní podpora pro geografická data a prostorové dotazy pomocí GeoDjango.
A mnoho dalšího. Zkrátka, Django je robustní a přívětivý webový framework.
Je Django pro vás to pravé?
Rozhodně ano.
Django se osvědčil v různých scénářích, ať už jde o rychlé prototypování, nebo vývoj podnikové aplikace. Jediným potenciálním problémem může být struktura frameworku. Django se snaží usnadnit a urychlit vývoj, ale zároveň vývojářům vnucuje svou strukturu ("konvence před konfigurací"), což nemusí vždy vyhovovat. Pokud byste například chtěli nahradit Django ORM jiným řešením (třeba SQL Alchemy), může vás to překvapit.
Máte zájem stát se fullstack vývojářem s Djangem a Pythonem? Podívejte se na tento online kurz.
Flask
Ačkoli Django dominuje v oblasti vývoje webu v Pythonu, Flask mu zdatně konkuruje.

Na rozdíl od Django je Flask „mikroframework“, což znamená, že se zaměřuje na to, aby několik základních věcí fungovalo správně a zbytek nechává na vás. Tento přístup může být zdrojem frustrace, ale i velkou výhodou, v závislosti na vašich cílech. Pro ty, kteří vědí, co dělají, a rádi si sami vybírají jednotlivé komponenty webové aplikace, je Flask ideální volbou.
Flask nabízí tyto funkce:
- Směrování, šablonování, správa relací a další základní funkce.
- Plná podpora pro unit testy.
- Minimální a modulární architektura.
- Prvotřídní podpora pro REST.
- Podpora pro Blueprints, jedinečný přístup k architektuře Flask pro menší webové aplikace.
- Možnost výběru vlastních balíčků pro ORM, migrace atd.
- Flexibilní struktura aplikací – soubory můžete umístit tam, kde vám to dává největší smysl.
- Statické poskytování souborů.
- Kompatibilita s WSGI.
Je Flask pro vás?
Jak bylo zmíněno, Flask je minimální webový framework, kde jsou všechny funkce rozděleny do samostatných komponent, které lze podle potřeby vyměnit. Pokud spěcháte s vytvořením prototypu, můžete strávit spoustu času rozhodováním o databázi, struktuře složek, směrování atd., což může být kontraproduktivní. Flask je nejvhodnější pro stabilní a seriózní projekty střední až velké velikosti, zejména REST API.
Bottle
Pokud se vám zdá přístup Flasku příliš robustní a preferujete ještě větší kontrolu, pak byste se měli seznámit s frameworkem Bottle.

Bottle jde ještě dál a vyžaduje pouze standardní knihovnu Pythonu. To znamená, že nemusíte instalovat žádné další balíčky pomocí pip, i když je pravděpodobné, že je budete potřebovat později. Zde je několik důvodů, proč je Bottle pro některé lidi atraktivní:
- Nasazení v jediném souboru. Ano, celá vaše aplikace je uložena v jednom souboru s příponou .py.
- Žádné externí závislosti. Pokud máte nainstalovanou správnou verzi Pythonu, můžete začít.
- Dodává se s vlastním šablonovacím enginem, který lze nahradit za Jinja2, Mako nebo Cheetah.
- Podpora pro formuláře, hlavičky, cookies a nahrávání souborů.
- Integrovaný webový server, který lze snadno nahradit.
Je Bottle pro vás?
Pokud vytváříte opravdu malou aplikaci (řekněme méně než 500 řádků kódu) bez speciálních požadavků, může být Bottle pro vás skvělou volbou. Je to jednoduchý a přímočarý přístup k vývoji webových aplikací. Nicméně v praxi se může stát, že vám Bottle spíše překáží, než pomáhá. Důvodem je to, že reálný svět se neustále mění a brzy na vás mohou padat nové požadavky. V takovém případě by správa všeho v jednom souboru byla komplikovaná.
Pokud si myslíte, že Bottle a Flask jsou si velmi podobné, máte pravdu. Návrhy na sloučení těchto dvou frameworků pocházejí už z roku 2012 a souhlasí s nimi i Armin, tvůrce Flasku. Nicméně Marcel, tvůrce Bottle, trvá na tom, že by oba měly zůstat oddělené kvůli rozdílnému přístupu a důrazu na jeden soubor.
Zope
Zope je poněkud komplikované vysvětlit. Jedná se o webový framework, který lze použít k vytváření menších i rozsáhlých aplikací, ale to není vše. Zope je spíše platforma, která zahrnuje nástroje (včetně webových frameworků) vytvořené podle filozofie Zope a spravované společností Zope Corporation.

Zope nabízí několik zajímavých komponent a funkcí vhodných pro vývoj podnikových aplikací:
- Architektura registrace a zjišťování komponent pro konfiguraci velkých aplikací.
- ZODB — objektová databáze pro Python určená pro nativní ukládání objektů.
- Robustní framework a standardy pro systémy správy obsahu.
- Sada frameworků pro webové aplikace, přičemž kanonický framework se stále nazývá Zope, i když na něm bylo postaveno několik nových frameworků (například Grok).
- Přísné standardy pro vývoj, vydávání a údržbu softwaru.
Je Zope pro vás?
Pokud hledáte vysoce strukturované prostředí pro vývoj rozsáhlých aplikací, Zope je dobrá volba. Nicméně můžete narazit na určité problémy. I když se Zope stále vyvíjí, komunita je relativně malá, a dokonce i mnoho vývojářů v Pythonu o něm nikdy neslyšelo. Nalezení výukových materiálů a rozsáhlé dokumentace může být obtížné, takže se připravte na to, že budete muset hodně hledat (i když komunita je velmi nápomocná!). Také vývojáři v Pythonu se nemusí chtít učit Zope a rozšiřovat své dovednosti.
TurboGears
TurboGears je vysoce flexibilní framework se skutečně složitou architekturou. Může se škálovat podle vašich potřeb a můžete ho použít k vytvoření jednoduché aplikace v jednom souboru i k rozsáhlému projektu pro více uživatelů.

TurboGears nabízí elegantní funkce, z nichž některé nejsou dostupné v populárních frameworkech (jako je Django), nebo je obtížné je vytvořit:
- Prvotřídní podpora pro více databází.
- Vícedatabázové transakce.
- Vysoce modulární struktura – můžete začít s jedním souborem a škálovat ho podle potřeby.
- Výkonný ORM (SQLAlchemy, který je pokročilejší a výkonnější než Django ORM).
- Modulární architektura založená na specifikaci WSGI.
- Vestavěná podpora pro sdílení databáze.
- Funkčně orientované rozhraní na rozdíl od hlubokých a pevných objektově orientovaných hierarchií.
Je TurboGears pro vás?
Pokud preferujete otestovaný, vyspělý a robustní framework, který stojí mimo mediální šum nových technologií, TurboGears je skvělá volba. Je vysoce respektován v komunitě a disponuje kompletní a rozsáhlou dokumentací. Nicméně TurboGears není natolik přesvědčivý, což znamená, že počáteční nastavení a konfigurace může trvat déle. Je to ale ideální framework pro vývoj podnikových aplikací.
Web2py
Web2py začal jako hobby projekt a byl vydán v roce 2007. Jeho cílem je zpřístupnit vývoj webových aplikací pro každého.

Web2py se snaží o maximální přístup s nulovými závislostmi – nemá žádné požadavky, nic není třeba instalovat a obsahuje kompletní webový editor pro vývoj, správu databází i nasazení.

Můžete si ho představit jako Android Studio, což je spíše kompletní vývojové prostředí než jen framework. Mezi zajímavé funkce Web2py patří:
- Prakticky žádná křivka učení.
- Minimální jádro (pouze 12 objektů), které si dokonce můžete zapamatovat!
- Šablony Pure-Python.
- Ochrana proti XSS, CSRF a dalším útokům.
- Přehledné a konzistentní API.
Je Web2py pro vás?
Web2py je stabilní a uživatelsky přívětivý framework, ale je obtížné ho doporučit před ostatními možnostmi, jako jsou Django nebo Flask. Nenabízí příliš mnoho pracovních příležitostí a není ideální pro testování unit testů. Nicméně, pokud vám vyhovuje API kódu a celkový zážitek z frameworku, můžete ho ocenit, zejména pokud vytváříte REST API.
CherryPy
CherryPy je další mikroframework, jehož cílem je poskytovat základní funkce frameworku a rychle se stáhnout do pozadí.

Ačkoli je srovnatelný s jinými mikroframeworky, jako je Flask, CherryPy se může pochlubit určitými rozdíly:
- Obsahuje vestavěný vícevláknový server (což je funkce, kterou Flask postrádá).
- Jeden webový server může hostovat více aplikací!
- Aplikaci můžete poskytovat jako WSGI aplikaci (pro interakci s jinými WSGI aplikacemi) nebo jako prostý HTTP server (který funguje lépe).
- Prvotřídní podpora pro profilování a unit testy.
- Běží na PyPy (pro nadšence výkonu), Jythonu a dokonce i na Androidu.
CherryPy nabízí všechny standardní funkce, které byste od webového frameworku očekávali.
Je CherryPy pro vás?
Pokud primárně vyvíjíte služby RESTful, CherryPy je mnohem vážnější konkurent než Flask. Je to deset let starý framework, který dobře dozrál a je vhodný jak pro malé, tak i pro velké aplikace.
Sanic
Nárůst popularity Node.js a jeho asynchronního programovacího modelu vyvolal v mnoha komunitách pocit zaostalosti, včetně Pythonu. V reakci na to se na scéně objevila vlna asynchronních webových frameworků, přičemž Sanic je jedním z nich.

Sanic je silně inspirován Flaskem, do té míry, že si vypůjčil dekorátory cest, plány a další základní prvky. Sanic to nijak neskrývá. Sanic přináší reálné neblokující I/O, které se vyrovná výkonu Node.js. Jinými slovy, Sanic je Flask s podporou async/await!
Ve srovnání s CherryPy má Sanic neuvěřitelnou výhodu z hlediska výkonu (představte si, jak by dopadl v porovnání s Flaskem!). Podívejte se na následující výsledky testované společností DataWeave:


Jak můžete vidět, jakmile se počet souběžných požadavků zvýší nad 50 za sekundu, CherryPy se prakticky zastaví a vykazuje vysokou chybovost.
Je Sanic pro vás?
Ačkoli má Sanic vynikající výkonnostní parametry, nemusí to být nejlepší volba pro váš příští projekt. Hlavním důvodem je nedostatek asynchronních knihoven. Většina existujících nástrojů a knihoven v Pythonu byla napsána pro jednovláknovou verzi CPythonu a nepodporují vysokou souběžnost nebo asynchronní operace. Pokud například vaše oblíbené ORM nepodporuje asynchronní operace, ztratí používání Sanic svůj smysl.
Z důvodu vyspělosti a dostupnosti nebudeme v Pythonu zkoumat žádné další asynchronní frameworky.
Masonite
Nedávno jsem narazil na tento framework a myslím, že to byl krok správným směrem. Byla vydána verze 2.0 a mám pocit, že konečně nastal čas věnovat Masonite trochu pozornosti.

Jednoduše řečeno, Masonite je Python verzí Laravelu (populárního PHP frameworku). Proč je to důležité? Laravel byl vytvořen na základě principů Ruby on Rails a oba frameworky společně umožňují vývojářům, kteří nepoužívají Ruby, vyzkoušet si přístup "Rails Way".
Vývojáři Laravelu (a do určité míry i Rails) se budou cítit jako doma a rychle se zorientují. Při testování Masonite (a při nahlášení jedné nebo dvou chyb!) jsem dokázal vytvořit REST API prakticky bez přemýšlení, protože svalová paměť Laravelu udělala vše za mě.
Masonite jako plnohodnotný systém s bateriemi nabízí několik zajímavých prvků:
- ORM ve stylu aktivního záznamu.
- Migrace databáze (které, na rozdíl od Django, musí vytvořit vývojář).
- Výkonný IoC kontejner pro vkládání závislostí.
- Vlastní CLI (nazývané „craft“) pro usnadnění vývoje a provádění úkolů.
- Prvotřídní podpora pro unit testy.
Největším konkurentem Masonite je Django, protože komunita se snaží propagovat framework jako snadný, uživatelsky přívětivý a další velkou věc. Zda překoná Django, se teprve ukáže, ale pro porovnání obou frameworků se můžete podívat sem a sem.
Je Masonite pro vás?
Ve srovnání s Djangem je Masonite stále poměrně nový framework, takže ho nelze doporučit s jistotou. Pokud ale máte rádi přístup Rails (nebo Laravel), oceníte, co Masonite nabízí. Je ideální pro rychlé prototypování, kde potřebujete mít vše předem nakonfigurováno a snadno nastavitelné.
Závěr
Na trhu je spousta Python frameworků, ať už větších či menších. Pro menší projekt si můžete vybrat prakticky cokoli. Podnikové aplikace mají ale specifické požadavky, které splňuje jen několik frameworků. Z mého pohledu jsou pro rozvoj podniku vhodné Django (do určité míry), Zope a TurboGears. A i mezi nimi tíhnu nejvíce k TurboGears.
Nicméně každý architekt se může rozhodnout pro mikroframework a rozvíjet svou vlastní architekturu. A to se v praxi také děje, což vysvětluje úspěch Flasku a podobných řešení.
Pokud s Pythonem začínáte, může vám být užitečný tento online kurz.
Dále můžete prozkoumat specializované Python frameworky pro vývoj API.