Die 9 besten Python-Frameworks zum Erstellen von kleinen bis hin zu Unternehmensanwendungen

Python ist sowohl ein lustiges Spielzeug als auch ein furchteinflößender Flammenwerfer. Dasselbe gilt für das, was Sie mit Python machen können.

Python wird von Bastlern, Wissenschaftlern und Architekten gleichermaßen geliebt.

Es ist verdammt einfach, damit anzufangen, hat Abstraktionen höherer Ordnung und Metaprogrammierungsfähigkeiten, um große und komplexe Systeme zu bauen, und hat Lastwagenladungen von Bibliotheken, um so ziemlich alles zu tun. Sicher, es gibt Einschränkungen in Bezug auf Parallelität und starke Eingabe, aber Sie können sie umgehen.

In diesem Artikel werfen wir einen Blick auf einige der besten Python-Frameworks, wenn es darum geht, große und kleine Webanwendungen zu erstellen.

Django

Das Django Framework hat den Test der Zeit bestanden, das Go-to-Web-Framework für die Python-Community. Wenn Sie einen Python-Entwickler im Schlaf angreifen und ihn mit vorgehaltener Waffe zwingen, eine Webanwendung zu erstellen, würde er automatisch nach Django greifen, so wie ein Rubyist nach Rails greift.

Und dafür gibt es einen guten Grund. Django ist, wie der Slogan sagt, „ein Web-Framework für Perfektionisten mit Deadlines“. Es handelt sich um ein sogenanntes „Batteries-included“-Framework (so ähnlich wie Python eine Batterie-inklusive-Sprache ist), das alle üblichen Funktionen „out of the box“ bereitstellt.

Mit diesen eingebauten Funktionen verkürzt Django die Entwicklungszeit massiv:

  • Ein praktisches und angenehmes ORM mit Migrationen, die automatisch vom Framework erstellt und angewendet werden.
  • Gerüst für die automatische Generierung des Admin-Panels basierend auf Ihren Modellen.
  • Unterstützung für Cookies, Sitzungen, Middleware, Vorlagen usw.
  • Sicherheitsfunktionen wie XSS-Prävention, CRSF-Prävention usw. werden automatisch angewendet.
  • Funktioniert mit praktisch allen Datenbanken da draußen (es ist einfach, Adapter zu finden, wo es keine offizielle Unterstützung gibt)
  • Erstklassige Unterstützung für geografische Daten und räumliche Abfragen GeoDjango

Und sehr viel mehr. Es genügt zu sagen, dass Django ein ausgewachsenes, benutzerfreundliches Web-Framework ist.

Ist Django etwas für Sie?

Absolut ja.

Django ist für alle Anwendungsfälle hervorragend geeignet, ob Rapid Prototyping oder die Planung einer Unternehmensanwendung. Die einzige grobe Kante, auf die Sie stoßen werden, ist die Struktur des Frameworks. Da sich Django nach hinten beugt, um die Entwicklung für Sie schnell und einfach zu machen, zwingt es dem Entwickler seine Struktur (ein Konzept namens „Konvention über Konfiguration“) auf, mit der Sie möglicherweise nicht einverstanden sind. Wenn Sie beispielsweise das Django-ORM durch etwas anderes ersetzen möchten (z. B. SQL Alchemy), seien Sie auf Überraschungen gefasst.

Sind Sie daran interessiert, Full-Stack-Entwickler mit Django und Python zu werden? – Schau dir das an fantastischer Online-Kurs.

Flasche

Während Django fast den gesamten Mindshare in der Python-Webentwicklung einnimmt, Flasche ist ein starker Anwärter.

Im Gegensatz zu Django ist Flask ein „Mikro-Framework“, was bedeutet, dass es sich darauf konzentriert, ein paar, absolut notwendige Dinge richtig zu machen, und den Rest Ihnen überlässt. Dieses „Der Rest liegt bei Ihnen“ kann eine Quelle der Frustration oder Freude sein, je nachdem, was Ihre Ziele sind. Für diejenigen, die wissen, was sie tun, und ihre Webanwendungen liebevoll gestalten möchten, indem sie Komponenten ihrer Wahl auswählen, ist Flask ein Geschenk des Himmels.

Flask bietet die folgenden Funktionen:

  • Routing, Vorlagen, Sitzungsverwaltung und andere nützliche Funktionen.
  • Volle Unterstützung für Unit-Tests
  • Eine minimale, steckbare Architektur
  • Erstklassiger REST-Support
  • Unterstützung für Blueprints, Flasks einzigartige Architektur für winzige Webanwendungen
  • Wählen Sie Ihre Pakete für ORM, Migrationen usw.
  • Flexible Anwendungsstruktur – Platzieren Sie Ihre Dateien dort, wo sie für Sie am sinnvollsten sind
  • Statische Dateibereitstellung
  • WGSI-konform

Ist Flask für Sie?

Wie bereits gesagt, ist Flask ein minimales Web-Framework, bei dem alles in einzelne Komponenten zerlegt ist, die Sie austauschen können. Wenn Sie es eilig haben, einen Prototyp zu bauen, werden Sie viel Zeit damit verbringen, triviale Entscheidungen über Datenbank, Ordnerstruktur, Routing usw. zu treffen, die sich als kontraproduktiv erweisen können. Flask funktioniert am besten, wenn Sie an einem stabilen, ernsthaften Projekt mittleren bis großen Umfangs arbeiten, insbesondere an REST-APIs.

Flasche

Wenn Sie der Meinung waren, dass Flasks Ansatz nicht minimal genug ist und Sie dennoch mehr Kontrolle wünschen, sagen Sie hallo zu Flasche.

Bottle streift sogar noch mehr ab, bis zu dem Punkt, an dem die einzige Abhängigkeit die Python-Standardbibliothek ist. Dies bedeutet, dass Sie dies oder das Pip nicht installieren müssen, obwohl Sie dies höchstwahrscheinlich in Kürze tun müssen. Deshalb sticht die Flasche für manche Menschen heraus:

  • Einzeldateibereitstellung. Ja, Ihre gesamte Anwendung befindet sich in einer einzigen „.py“-Datei.
  • Keine externen Abhängigkeiten. Wenn Sie die richtige Python-Version installiert haben, können Sie loslegen.
  • Liefert seine Templating-Engine, die mit Jinja2, Mako oder Cheetah ausgetauscht werden kann.
  • Unterstützung für Formulare, Kopfzeilen, Cookies und Datei-Uploads.
  • Eingebauter Webserver, der einfach ausgetauscht werden kann.

Ist Flasche für Sie?

Wenn Sie eine wirklich kleine App (z. B. weniger als 500 Codezeilen) ohne besondere Anforderungen erstellen, kann Bottle für Sie sehr sinnvoll sein. Es ist ein völlig sachlicher Ansatz zum Erstellen von Web-Apps, aber in der Praxis werden Sie feststellen, dass Sie durch Bottle mehr behindert als unterstützt werden. Der Grund dafür ist, dass sich die reale Welt ständig ändert und bevor Sie es wissen. Neue Anforderungen werden auf Ihren Kopf fallen gelassen. An diesem Punkt würde es zu einer lästigen Pflicht werden, alles in eine einzige Datei zu packen.

Auch wenn Sie denken, dass Bottle und Flask fast gleich sind, haben Sie recht. Vorschläge von verschmelzen die beiden stammen aus dem Jahr 2012, und sogar Armin, der Schöpfer von Flask, stimmt dem zu. Marcel, der Schöpfer von Bottle, hält jedoch aufgrund des Single-File-Ansatzes an einer strikten ideologischen Unterscheidung fest und besteht darauf, dass die beiden getrennt bleiben.

Zope

Zope ist kompliziert zu erklären, aber ich werde es versuchen. Ja, es ist ein Web-Framework, mit dem große oder kleine Anwendungen erstellt werden können, aber das ist noch nicht alles. Zope ist eher eine Plattform, die aus Tools (einschließlich Web-Frameworks) besteht, die nach der Zope-Philosophie erstellt und von der Zope Corporation gepflegt werden.

Zope hat mehrere interessante Komponenten und Funktionen, die für die Entwicklung von Unternehmensanwendungen geeignet sind:

  • Eine Komponentenregistrierungs- und Erkennungsarchitektur zum Konfigurieren einer großen App.
  • ZODB — (die einzige) Objektdatenbank für Python zum nativen Speichern von Objekten.
  • Vollwertiges Framework und Standards für Content-Management-Systeme
  • Eine Reihe von Webanwendungs-Frameworks – das kanonische heißt immer noch Zope, obwohl mehrere neue Frameworks (wie Grok) darauf aufgebaut wurden.
  • Starke Standards für Softwareentwicklung, -freigabe und -wartung.

Ist Zope für Sie?

Wenn Sie nach einer stark strukturierten Umgebung zum Erstellen wirklich großer Apps suchen, ist Zope gut. Das heißt, Sie werden auch auf Ihren fairen Anteil an Problemen stoßen. Während sich Zope ständig weiterentwickelt, ist die Community wirklich klein, so dass viele Python-Entwickler noch nicht einmal davon gehört haben. Es ist schwierig, Tutorials und umfangreiche Dokumentation zu finden, seien Sie also darauf vorbereitet, viel herumzustöbern (obwohl die Community wirklich hilfreich ist!). Außerdem wollen die Python-Entwickler, denen Sie begegnen, Zope vielleicht nicht lernen und ihre Fähigkeiten „verdünnen“.

TurboGears

TurboGears ist ein hochflexibles Framework mit einer wirklich zusammensetzbaren Architektur. Es ist ein Framework, das gemäß Ihren Anforderungen skaliert wird, und Sie können es verwenden, um eine Anwendung mit einer einzigen Datei oder ein Multi-Tenancy-Gigant zu erstellen.

TurboGears hat einige elegante Funktionen, von denen einige entweder in gängigen Frameworks (wie Django) nicht vorhanden oder schwer zu erstellen sind:

  • Erstklassige Unterstützung für mehrere Datenbanken
  • Transaktionen mit mehreren Datenbanken
  • Hochgradig modular – beginnen Sie mit einer einzelnen Datei und skalieren Sie so weit wie Sie möchten
  • Ein leistungsfähiges ORM (SQLAlchemy, das ausgereifter und leistungsfähiger ist als das ORM von Django)
  • Pluggable-Architektur basierend auf der WSGI-Spezifikation
  • Integrierte Unterstützung für Datenbank-Sharding
  • Eine funktionsgesteuerte Schnittstelle im Gegensatz zu tiefen, starren objektorientierten Hierarchien.

Ist TurboGears für Sie?

Wenn Sie sich gerne weiterentwickeln möchten und ein getestetes, ausgereiftes und robustes Framework abseits des Medienrummels von „super Next-Gen“ und all dem suchen, ist TurboGears genau das Richtige für Sie. Es ist in der Community hoch angesehen und verfügt über eine vollständige und umfangreiche Dokumentation. Sicher, TurboGears ist nicht eigensinnig, was bedeutet, dass die anfängliche Einrichtungs- und Konfigurationszeit länger sein kann, aber es ist das ideale Framework für die Entwicklung von Unternehmensanwendungen.

Web2py

Web2py begann als Hobbyprojekt und wurde 2007 veröffentlicht. Seine Ziele sind es, die Webentwicklung einfach und für jedermann zugänglich zu machen.

Infolgedessen treibt Web2py den Null-Abhängigkeits-Ansatz auf die Spitze – es hat keine Anforderungen, nichts muss installiert werden und enthält einen voll funktionsfähigen webbasierten Editor für Entwicklung, Datenbankverwaltung sowie Bereitstellung.

Man kann es sich fast als Android Studio vorstellen, das eher eine vollständige Umgebung als nur ein Framework ist. Einige nette Funktionen, die Web2py hat, sind:

  • Praktisch keine Lernkurve.
  • Minimaler Kern (nur 12 Objekte), der sogar auswendig gelernt werden kann!
  • Pure-Python-Vorlagen
  • Schutz vor XSS, CSRF und anderen Angriffen
  • Eine angenehme und konsistente API

Ist Web2py für Sie?

Web2py ist ein stabiles und unterhaltsames Framework, aber es ist schwer, es gegenüber anderen Optionen wie Django, Flask usw. zu empfehlen. Es gibt kaum Jobs und die Unit-Testing-Geschichte ist nicht großartig. Das heißt, Sie könnten die Code-API und die Gesamterfahrung, die das Framework bietet, genießen, insbesondere wenn Sie REST-APIs erstellen.

CherryPy

CherryPy ist ein weiteres Mikroframework, das darauf abzielt, grundlegende Framework-Funktionalität bereitzustellen und schnell aus dem Weg zu gehen.

Während es mit anderen Mikroframeworks wie Flask vergleichbar ist, rühmt sich CherryPy einiger Unterschiede:

  • Es enthält einen integrierten Multithread-Server (etwas, das auf der Wunschliste von Flask bleibt)
  • Der (einzelne) Webserver kann mehrere Anwendungen hosten!
  • Stellen Sie Ihre Anwendung als WSGI-App (zur Schnittstelle mit anderen WSGI-Apps) oder als einfachen HTTP-Server (mit besserer Leistung) bereit.
  • Erstklassige Unterstützung für Profiling und Unit-Tests
  • Läuft auf PyPy (für die wahren Performance-Junkies), Jython und sogar Android

CherryPy erledigt all dies und dann das Übliche, das Sie von einem Web-Framework erwarten würden.

Ist CherryPy für Sie?

Wenn Sie hauptsächlich RESTful-Dienste erstellen, ist CherryPy ein viel ernsthafterer Konkurrent als Flask. Es ist ein jahrzehntealtes Framework, das schön gereift ist und sich für kleine und große Anwendungen gleichermaßen eignet.

Sanic

Der Aufstieg von Node und seinem asynchronen Programmiermodell ließ viele Communities hinter sich, darunter auch Python. Als Reaktion darauf ist eine Flut von asynchronen Web-Frameworks auf dem Radar aufgetaucht, Sanic einer von ihnen zu sein.

Sanic ist insofern stark von Flask inspiriert, als es sich die Route Decorators, Blueprints und andere grundlegende Hakenleinen und Sinker ausgeliehen hat. Und sie schämen sich nicht, es zuzugeben. Was Sanic an den Tisch bringt, wenn Sie ein Flask-Fan sind, ist echte nicht blockierende E/A, um die Leistungsniveaus einer Node-Anwendung zu erreichen. Mit anderen Worten, Sanic ist Flask mit Async/await-Unterstützung!

Im Vergleich zu CherryPy hat Sanic einen unglaublichen Leistungsvorteil (denken Sie nur daran, wie es gegen Flask abschneiden würde!). Schauen Sie sich die folgenden Ergebnisse an, die von getestet wurden DataWeave:

Wie Sie sehen können, erstickt CherryPy praktisch und verursacht eine hohe Fehlerrate, sobald die Parallelitätszahlen 50 pro Sekunde überschreiten.

Ist Sanic für Sie?

Während die Leistungsmerkmale von Sanic alles andere über den Haufen werfen, ist es vielleicht nicht die beste Wahl für Ihr nächstes Projekt. Der Hauptgrund ist das Fehlen asynchroner Bibliotheken. Der Großteil der vorhandenen Python-Tools und -Bibliotheken wurde für die Single-Threaded-CPython-Version geschrieben, ohne dass an hohe Parallelität oder asynchrone Vorgänge gedacht wurde. Wenn beispielsweise Ihr bevorzugtes ORM keine asynchronen Operationen unterstützt, wird der Sinn der Verwendung von Sanic zunichte gemacht.

Aufgrund dieser Reife- und Verfügbarkeitsgründe werden wir keine weiteren asynchronen Frameworks in Python untersuchen.

Masonit

Ich bin vor einiger Zeit auf dieses Framework gestoßen und dachte, es sei ein Schritt in die richtige Richtung. Seitdem wurde Version 2.0 veröffentlicht, und ich habe das Gefühl, dass die Zeit endlich gekommen ist, um zu geben Masonit etwas Liebe.

Einfach ausgedrückt ist Masonite die Python-Version von Laravel (ein berühmtes PHP-Framework, falls Sie es nicht wussten). Warum spielt das eine Rolle? Es ist wichtig, weil Laravel auf den Prinzipien von Ruby on Rails aufgebaut wurde, und zusammen ermöglichen diese beiden Frameworks Nicht-Ruby-Entwicklern, die „Rails Way“ der Dinge zu erleben.

Die Entwickler von Laravel (und in gewissem Maße Rails) werden sich wie zu Hause fühlen und wären buchstäblich im Handumdrehen einsatzbereit. Als ich Masonite ausprobierte (und ich habe ein oder zwei Probleme gemeldet, einschließlich eines Fehlers!), War ich in der Lage, REST-APIs ohne jegliches Nachdenken zu erstellen, da mein Laravel-Muskelgedächtnis alles erledigte.

Als Full-Stack-Framework mit integrierten Batterien bringt Masonite mehrere interessante Dinge auf den Tisch:

  • ORM im Active-Record-Stil
  • Datenbankmigrationen (die im Gegensatz zu Django vom Entwickler erstellt werden müssen)
  • Ein leistungsstarker IoC-Container für Abhängigkeitsinjektion
  • Eigene CLI (genannt „craft“) für Scaffolding und laufende Tasks
  • Erstklassige Unterstützung für Unit-Tests

Der größte „Rivale“ für Masonite ist Django, da die Community ihr Bestes tut, um das Framework als einfach, reizvoll und das nächste große Ding zu vermarkten. Ob es Django übertreffen wird, wird die Zeit zeigen (wenn Sie mich fragen, hat es einen anständigen Schuss), aber für eine Diskussion, die die beiden vergleicht, siehe hier und hier.

Ist Masonit etwas für Sie?

Masonite ist im Vergleich zu Django noch ein Baby, daher kann es auf keinen Fall Django vorgezogen werden. Das heißt, wenn Sie auf die Rails-Art (oder die Laravel-Art) stehen, werden Sie zu schätzen wissen, was Masonite zu bieten hat. Es ist ideal für den schnellen Bau von Prototypen, bei denen alles vorkonfiguriert und einfach zu wechseln sein muss.

Fazit

Es gibt keinen Mangel an großen und kleinen Python-Frameworks. Während Sie für ein kleines Projekt so ziemlich alles aufgreifen können, hat eine Unternehmensanwendung Anforderungen, die nicht viele dieser Frameworks erfüllen können. Wenn Sie mich fragen, fallen mir für die Unternehmensentwicklung Django (bis zu einem gewissen Grad), Zope und TurboGears ein. Und selbst unter diesen tendiere ich zu TurboGears.

Allerdings kann jeder Architekt, der sein Geld wert ist, ein Mikroframework aufgreifen und seine Architektur einführen. Und genau das passiert in der Praxis, was den Erfolg von Flask und ähnlichen Ideen erklärt.

Wenn Sie ein Neuling sind, dann diesen Online-Kurs wäre hilfreich, um Python zu lernen.

Erkunden Sie als Nächstes einige der spezialisierten Python-Frameworks zum Erstellen von APIs.