9 najlepszych frameworków Pythona do tworzenia aplikacji małych i korporacyjnych

Python to zarówno zabawna zabawka, jak i przerażający miotacz ognia. To samo dotyczy tego, co możesz zrobić z Pythonem.

Python jest uwielbiany zarówno przez hobbystów, naukowców, jak i architektów.

Jest cholernie łatwy do rozpoczęcia, ma abstrakcje wyższego rzędu i możliwości metaprogramowania do budowania dużych i złożonych systemów oraz ma mnóstwo bibliotek do robienia prawie wszystkiego. Jasne, istnieją ograniczenia, jeśli chodzi o współbieżność i mocne pisanie, ale można je obejść.

W tym artykule przyjrzymy się niektórym z najlepszych frameworków Pythona, jeśli chodzi o tworzenie dużych i małych aplikacji internetowych.

Django

The Django Framework przetrwał próbę czasu jako podstawowy framework sieciowy dla społeczności Pythona. Jeśli zaatakowałeś programistę Pythona we śnie i zmusiłeś go do zbudowania aplikacji internetowej pod groźbą użycia broni, automatycznie sięgnąłby po Django, tak jak Rubinista sięga po Railsy.

I jest ku temu dobry powód. Django to, jak mówi slogan, „platforma internetowa dla perfekcjonistów z terminami”. Jest to tak zwany framework „z bateriami” (podobnie jak Python jest językiem z bateriami), który zapewnia wszystkie typowe funkcje od razu po wyjęciu z pudełka.

Dzięki tym funkcjom Django znacznie skraca czas programowania:

  • Poręczny i przyjemny ORM, z migracjami tworzonymi i stosowanymi automatycznie przez framework.
  • Rusztowanie do automatycznego generowania panelu administracyjnego na podstawie Twoich modeli.
  • Obsługa plików cookie, sesji, oprogramowania pośredniczącego, szablonów itp.
  • Funkcje bezpieczeństwa, takie jak zapobieganie XSS, zapobieganie CRSF itp., są stosowane automatycznie.
  • Działa z praktycznie wszystkimi istniejącymi bazami danych (łatwo znaleźć adaptery tam, gdzie oficjalne wsparcie nie istnieje)
  • Jednak pierwszorzędna obsługa danych geograficznych i zapytań przestrzennych GeoDjango

I dużo dużo więcej. Wystarczy powiedzieć, że Django to w pełni rozwinięty, przyjazny framework sieciowy.

Czy Django jest dla Ciebie?

Absolutnie tak.

Django ma doskonały sens we wszystkich przypadkach użycia, niezależnie od tego, czy chodzi o szybkie prototypowanie, czy planowanie aplikacji korporacyjnej. Jedyną szorstką krawędzią, na którą się natkniesz, jest struktura frameworka. Ponieważ Django robi wszystko, aby programowanie było szybkie i łatwe, narzuca programistom swoją strukturę (koncepcję zwaną „konwencją ponad konfiguracją”), z czym możesz się nie zgadzać. Na przykład, jeśli chcesz zastąpić Django ORM czymś innym (np. SQL Alchemy), bądź przygotowany na niespodzianki.

Chcesz zostać programistą full-stack z Django i Pythonem? – Sprawdź to fantastyczny kurs online.

Kolba

Podczas gdy Django zajmuje prawie cały udział w tworzeniu stron internetowych w Pythonie, Kolba jest mocnym rywalem.

W przeciwieństwie do Django, Flask jest „mikro-frameworkiem”, co oznacza, że ​​koncentruje się na poprawieniu kilku minimalnych rzeczy, a resztę pozostawia tobie. To „reszta zależy od ciebie” może być źródłem frustracji lub zachwytu, w zależności od tego, jakie są twoje cele. Dla tych, którzy wiedzą, co robią i chcą z miłością tworzyć swoje aplikacje internetowe, wybierając wybrane przez siebie komponenty, Flask jest darem niebios.

Flask oferuje następujące funkcje:

  • Routing, tworzenie szablonów, zarządzanie sesjami i inne przydatne funkcje.
  • Pełne wsparcie dla testów jednostkowych
  • Minimalistyczna, podłączana architektura
  • Pierwszorzędna obsługa REST
  • Obsługa Blueprints, unikalnego podejścia Flask do architektury małych aplikacji internetowych
  • Wybierz swoje pakiety dla ORM, migracji itp.
  • Elastyczna struktura aplikacji — umieść swoje pliki tam, gdzie mają dla Ciebie największy sens
  • Udostępnianie plików statycznych
  • Zgodność z WGSI

Czy Flask jest dla Ciebie?

Jak już powiedziano, Flask to minimalna platforma internetowa, w której wszystko jest podzielone na poszczególne komponenty, które można wymieniać. Jeśli spieszysz się z budową prototypu, spędzisz dużo czasu na podejmowaniu trywialnych decyzji dotyczących bazy danych, struktury folderów, routingu itp., które mogą przynieść efekt przeciwny do zamierzonego. Flask działa najlepiej, gdy zajmujesz się stabilnym, poważnym projektem o średniej i dużej skali, zwłaszcza interfejsami API REST.

Butelka

Jeśli uważasz, że podejście Flask nie było wystarczająco minimalne i nadal chciałbyś mieć większą kontrolę, przywitaj się Butelka.

Butelka rozbiera się jeszcze bardziej, do punktu, w którym jedyną zależnością jest standardowa biblioteka Pythona. Oznacza to brak instalacji pip this lub pip install tamto, chociaż najprawdopodobniej będziesz musiał to zrobić wkrótce. Oto dlaczego butelka wyróżnia się dla niektórych osób:

  • Wdrożenie pojedynczego pliku. Tak, cała Twoja aplikacja znajduje się w jednym pliku „.py”.
  • Brak zewnętrznych zależności. Jeśli masz zainstalowaną odpowiednią wersję Pythona, możesz zacząć.
  • Dostarcza swój silnik szablonów, który można zamienić na Jinja2, Mako lub Cheetah.
  • Obsługa formularzy, nagłówków, plików cookie i przesyłania plików.
  • Wbudowany serwer WWW, który można łatwo wymienić.

Czy Butelka jest dla Ciebie?

Jeśli tworzysz naprawdę małą aplikację (powiedzmy, mniej niż 500 linii kodu) bez specjalnych wymagań, butelka może mieć dla ciebie dużo sensu. To całkowicie rozsądne podejście do tworzenia aplikacji internetowych, ale w praktyce odkryjesz, że Butelka bardziej ci przeszkadza niż pomaga. Powodem jest to, że prawdziwy świat zawsze się zmienia i zanim się zorientujesz. Nowe wymagania zostaną zrzucone na twoją głowę. W tym momencie umieszczanie wszystkiego w jednym pliku stałoby się obowiązkiem.

Ponadto, jeśli myślisz, że Butelka i Flask są prawie takie same, masz rację. Propozycje łączenie ta dwójka pochodzi z 2012 roku i nawet Armin, twórca Flaska, zgadza się z tym. Jednak Marcel, twórca Butelki, utrzymuje ścisłe rozróżnienie ideologiczne ze względu na podejście oparte na jednym pliku i nalega, aby oba pozostały oddzielne.

Zop

Zop jest skomplikowane do wyjaśnienia, ale spróbuję. Tak, jest to platforma internetowa, której można używać do tworzenia dużych lub małych aplikacji, ale to nie wszystko. Zope to raczej platforma składająca się z narzędzi (w tym frameworków internetowych) stworzonych zgodnie z filozofią Zope i utrzymywanych przez Zope Corporation.

Zope ma kilka interesujących komponentów i funkcji odpowiednich do tworzenia aplikacji dla przedsiębiorstw:

  • Architektura rejestrowania i wykrywania składników do konfigurowania dużej aplikacji.
  • ZODB — (jedyna) obiektowa baza danych dla Pythona do natywnego przechowywania obiektów.
  • Pełnoprawne ramy i standardy dla systemów zarządzania treścią
  • Zestaw frameworków aplikacji internetowych — kanoniczny nadal nazywa się Zope, chociaż na jego bazie zbudowano kilka nowych frameworków (takich jak Grok).
  • Silne standardy tworzenia, wydawania i konserwacji oprogramowania.

Czy Zop jest dla Ciebie?

Jeśli szukasz wysoce ustrukturyzowanego środowiska do tworzenia naprawdę dużych aplikacji, Zope jest dobry. To powiedziawszy, napotkasz również wiele problemów. Podczas gdy Zope wciąż ewoluuje, społeczność jest naprawdę mała, do tego stopnia, że ​​wielu programistów Pythona nawet o niej nie słyszało. Znalezienie samouczków i obszernej dokumentacji jest trudne, więc przygotuj się na dużo kopania (chociaż społeczność jest naprawdę pomocna!). Ponadto programiści Pythona, z którymi się spotykasz, mogą nie chcieć uczyć się Zope i „osłabiać” swoje umiejętności.

TurboGears

TurboGears to bardzo elastyczny framework, który ma naprawdę komponowalną architekturę. Jest to platforma, która skaluje się zgodnie z Twoimi potrzebami i możesz jej użyć do zbudowania aplikacji z jednym plikiem lub giganta obsługującego wielu dzierżawców.

TurboGears ma kilka eleganckich funkcji, z których niektóre nie są obecne w popularnych frameworkach (takich jak Django) lub są trudne do zbudowania:

  • Pierwszorzędna obsługa wielu baz danych
  • Transakcje z wieloma bazami danych
  • Wysoce modułowa — zacznij od jednego pliku i skaluj go w miarę potrzeb
  • Potężny ORM (SQLAlchemy, który jest bardziej dojrzały i zdolny niż ORM Django)
  • Architektura typu pluggable oparta na specyfikacji WSGI
  • Wbudowana obsługa fragmentacji bazy danych
  • Interfejs oparty na funkcjach w przeciwieństwie do głębokich, sztywnych hierarchii zorientowanych obiektowo.

Czy TurboGears jest dla Ciebie?

Jeśli chcesz szczęśliwie się rozwijać i chcesz mieć przetestowaną, dojrzałą i solidną platformę z dala od medialnego szumu o „niesamowitej, nowej generacji” i tym podobnych, TurboGears świetnie pasuje. Jest bardzo szanowany w społeczności i ma kompletną, obszerną dokumentację. Jasne, TurboGears nie jest opiniotwórcze, co oznacza, że ​​początkowa konfiguracja i czas konfiguracji mogą być dłuższe, ale jest to idealna platforma do tworzenia aplikacji dla przedsiębiorstw.

Web2py

Web2py powstał jako projekt hobbystyczny i został wydany w 2007 roku. Jego celem jest uczynienie tworzenia stron internetowych łatwym i dostępnym dla wszystkich.

W rezultacie Web2py przenosi podejście zerowej zależności do skrajności — nie ma żadnych wymagań, nie ma nic do zainstalowania i zawiera w pełni funkcjonalny edytor internetowy do programowania, zarządzania bazami danych, a także wdrażania.

Możesz prawie myśleć o tym jako o Android Studio, które jest bardziej kompletnym środowiskiem niż tylko frameworkiem. Niektóre fajne funkcje, które ma Web2py, to:

  • Praktycznie brak krzywej uczenia się.
  • Minimalny rdzeń (tylko 12 obiektów), który można nawet zapamiętać!
  • Szablony w czystym Pythonie
  • Ochrona przed XSS, CSRF i innymi atakami
  • Przyjemny i spójny interfejs API

Czy Web2py jest dla Ciebie?

Web2py to stabilny i zabawny framework, ale trudno go polecić w porównaniu z innymi opcjami, takimi jak Django, Flask itp. Prawie nie ma miejsc pracy, a historia testów jednostkowych nie jest świetna. To powiedziawszy, możesz cieszyć się interfejsem API kodu i ogólnym doświadczeniem oferowanym przez platformę, zwłaszcza jeśli budujesz interfejsy API REST.

CherryPy

CherryPy to kolejny mikroframework, który ma na celu zapewnienie podstawowej funkcjonalności frameworka i szybkie zejście z drogi.

Chociaż jest porównywalny z innymi mikroframeworkami, takimi jak Flask, CherryPy może pochwalić się pewnym wyróżnieniem:

  • Zawiera wbudowany serwer wielowątkowy (coś, co pozostaje na liście życzeń Flask)
  • (Pojedynczy) serwer WWW może obsługiwać wiele aplikacji!
  • Udostępnij swoją aplikację jako aplikację WSGI (do łączenia z innymi aplikacjami WSGI) lub zwykły serwer HTTP (który działa lepiej)
  • Pierwszorzędne wsparcie dla profilowania i testów jednostkowych
  • Działa na PyPy (dla prawdziwych ćpunów wydajności), Jython, a nawet na Androidzie

CherryPy robi to wszystko, a potem to, czego można oczekiwać od frameworka internetowego.

Czy CherryPy jest dla Ciebie?

Jeśli budujesz głównie usługi RESTful, CherryPy jest znacznie poważniejszym rywalem niż Flask. To dziesięcioletni framework, który ładnie dojrzał i nadaje się zarówno do małych, jak i dużych aplikacji.

Sanic

Powstanie Node i jego asynchronicznego modelu programowania pozostawiło wiele społeczności w tyle, w tym Pythona. W odpowiedzi na radarze pojawiła się lawina asynchronicznych platform internetowych, Sanic będąc jednym z nich.

Sanic jest mocno inspirowany Flaskiem, do tego stopnia, że ​​zapożyczył dekoratory tras, plany i inne podstawowe haczyki i ciężarki. I nie wstydzą się do tego przyznać. To, co Sanic wnosi do stołu, jeśli jesteś fanem Flask, to prawdziwie nieblokujące wejścia/wyjścia, aby sprostać poziomom wydajności aplikacji Node. Innymi słowy, Sanic to Flask z obsługą asynchronizacji/oczekiwania!

W porównaniu do CherryPy, Sanic ma niesamowitą przewagę wydajności (pomyśl tylko, jak poradziłby sobie z Flask!). Sprawdź następujące wyniki przetestowane przez DataWeave:

Jak widać, gdy liczba współbieżności zaczyna przekraczać 50 na sekundę, CherryPy praktycznie się dusi i generuje wysoki wskaźnik awaryjności.

Czy Sanic jest dla Ciebie?

Podczas gdy charakterystyka wydajności Sanic wybija wszystko inne z wody, może nie być najlepszym wyborem dla twojego następnego projektu. Głównym powodem jest brak bibliotek asynchronicznych. Większość istniejących narzędzi i bibliotek Pythona została napisana dla jednowątkowej wersji CPython, bez wcześniejszego przemyślenia o dużej współbieżności lub operacjach asynchronicznych. Jeśli na przykład twój ulubiony ORM nie obsługuje operacji asynchronicznych, cały sens korzystania z Sanica zostaje pokonany.

Ze względu na te powody dojrzałości i dostępności nie będziemy już badać żadnych struktur asynchronicznych w Pythonie.

masonita

Natknąłem się na ten framework jakiś czas temu i pomyślałem, że to krok we właściwym kierunku. Od tego czasu została wydana wersja 2.0 i czuję, że w końcu nadszedł czas, aby dać masonita trochę miłości.

Mówiąc najprościej, Masonite to Pythonowa wersja Laravela (słynny framework PHP, na wypadek gdybyś nie wiedział). Dlaczego to ma znaczenie? Ma to znaczenie, ponieważ Laravel został zbudowany na zasadach Ruby on Rails, a razem te dwa frameworki pozwalają programistom spoza Ruby doświadczyć „Rails Way” robienia rzeczy.

Programiści Laravela (i do pewnego stopnia Railsów) poczują się jak w domu i będą działać dosłownie w mgnieniu oka. Kiedy wypróbowałem Masonite (i zgłosiłem problem lub dwa, w tym błąd!), byłem w stanie zbudować API REST z dokładnie zerowym myśleniem, ponieważ moja pamięć mięśniowa Laravel robiła wszystko.

Jako rama z pełnym stosem zawierającą baterie, Masonite oferuje kilka interesujących rzeczy:

  • ORM w stylu aktywnego rekordu
  • Migracje baz danych (które w przeciwieństwie do Django muszą być tworzone przez programistę)
  • Potężny kontener IoC do wstrzykiwania zależności
  • Własne CLI (nazywane „craft”) do tworzenia rusztowań i uruchamiania zadań
  • Pierwszorzędne wsparcie dla testów jednostkowych

Największym „rywalem” Masonite jest Django, ponieważ społeczność robi wszystko, co w jej mocy, aby sprzedawać platformę jako łatwą, zachwycającą i następną wielką rzecz. Czas pokaże, czy przewyższy Django (jeśli mnie pytasz, ma przyzwoity strzał), ale aby zapoznać się z dyskusją porównującą te dwa, zobacz tutaj oraz tutaj.

Czy masonite jest dla Ciebie?

Masonite jest wciąż dzieckiem w porównaniu z Django, więc nie ma możliwości, aby można go było polecić zamiast Django. To powiedziawszy, jeśli interesuje Cię sposób robienia rzeczy w Railsach (lub sposób Laravela), docenisz to, co ma do zaoferowania Masonite. Jest idealny do szybkiego budowania prototypów, które wymagają wstępnie skonfigurowanego i łatwego przełączania wszystkiego.

Wniosek

Nie brakuje frameworków Pythona, dużych i małych. Chociaż do małego projektu można wybrać prawie wszystko, aplikacja korporacyjna ma wymagania, których nie może spełnić wiele z tych platform. Jeśli zapytasz mnie, do rozwoju przedsiębiorstwa przychodzą na myśl Django (do pewnego stopnia), Zope i TurboGears. I nawet wśród nich skłaniam się ku TurboGears.

To powiedziawszy, każdy architekt wart swojej soli może wybrać mikroframework i wdrożyć swoją architekturę. I tak mniej więcej dzieje się w praktyce, co wyjaśnia sukces Flaska i podobnych pomysłów.

Jeśli jesteś nowicjuszem, to ten kurs online przydałoby się nauczyć Pythona.

Następnie zapoznaj się z niektórymi wyspecjalizowanymi platformami języka Python do tworzenia interfejsów API.