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

Python ist mehr als nur ein unterhaltsames Werkzeug; es ist auch ein leistungsstarkes Instrument. Dies gilt auch für die vielfältigen Anwendungsmöglichkeiten von Python.

Ob Hobbybastler, Wissenschaftler oder Softwarearchitekten – Python erfreut sich großer Beliebtheit.

Der Einstieg ist denkbar einfach, bietet aber gleichzeitig fortschrittliche Abstraktionen und Metaprogrammierungsfähigkeiten für den Bau umfangreicher, komplexer Systeme. Eine riesige Sammlung von Bibliotheken ermöglicht es, nahezu jede Aufgabe zu bewältigen. Zwar gibt es Einschränkungen hinsichtlich der Parallelität und starken Typisierung, doch diese lassen sich umgehen.

In diesem Beitrag beleuchten wir einige der herausragendsten Python-Frameworks für die Entwicklung von Webanwendungen, von klein bis groß.

Django

Das Framework Django hat sich als das führende Web-Framework in der Python-Community etabliert. Es ist die erste Wahl vieler Python-Entwickler, ähnlich wie Rails für Ruby-Programmierer.

Dies hat gute Gründe. Django ist, wie der Slogan besagt, „ein Web-Framework für Perfektionisten mit Deadline“. Es ist ein sogenanntes „Batteries-included“-Framework, das bereits viele gängige Funktionen integriert hat.

Dank dieser integrierten Funktionen verkürzt Django die Entwicklungszeit erheblich:

  • Ein praktisches und angenehmes ORM mit Migrationen, die vom Framework automatisch generiert und angewendet werden.
  • Automatisches Gerüst für die Generierung des Admin-Panels basierend auf Ihren Datenmodellen.
  • Unterstützung für Cookies, Sitzungen, Middleware, Templates usw.
  • Automatische Anwendung von Sicherheitsfunktionen wie XSS- und CRSF-Schutz.
  • Kompatibilität mit nahezu allen gängigen Datenbanken (Adapter sind leicht zu finden, auch wenn es keine offizielle Unterstützung gibt).
  • Erstklassige Unterstützung für Geodaten und räumliche Abfragen mit GeoDjango.

Und vieles mehr. Kurz gesagt, Django ist ein umfangreiches, benutzerfreundliches Web-Framework.

Ist Django das Richtige für Sie?

Definitiv ja.

Django eignet sich hervorragend für alle Anwendungsfälle, vom Rapid Prototyping bis hin zur Planung von Unternehmensanwendungen. Die einzige Einschränkung könnte die Struktur des Frameworks selbst sein. Da Django die Entwicklung schnell und einfach gestalten will, zwingt es dem Entwickler seine eigene Struktur auf (ein Konzept namens „Konvention vor Konfiguration“), mit der Sie möglicherweise nicht einverstanden sind. Wenn Sie beispielsweise das Django-ORM durch etwas anderes (z. B. SQL Alchemy) ersetzen möchten, könnten Sie Überraschungen erleben.

Möchten Sie Full-Stack-Entwickler mit Django und Python werden? Dann schauen Sie sich diesen fantastischen Online-Kurs an.

Flask

Obwohl Django in der Python-Webentwicklung fast die gesamte Aufmerksamkeit auf sich zieht, ist Flask ein ernstzunehmender Konkurrent.

Im Gegensatz zu Django ist Flask ein „Mikro-Framework“, was bedeutet, dass es sich darauf konzentriert, einige absolut notwendige Dinge korrekt zu erledigen und den Rest Ihnen zu überlassen. Dieses „Der Rest liegt bei Ihnen“ kann je nach Ihren Zielen eine Quelle der Frustration oder Freude sein. Für diejenigen, die wissen, was sie tun, und ihre Webanwendungen gerne individuell gestalten möchten, indem sie Komponenten ihrer Wahl auswählen, ist Flask ein Geschenk des Himmels.

Flask bietet folgende Funktionen:

  • Routing, Templates, Sitzungsmanagement und andere nützliche Funktionen.
  • Umfassende Unterstützung für Unit-Tests.
  • Eine minimalistische, steckbare Architektur.
  • Erstklassige REST-Unterstützung.
  • Unterstützung für Blueprints, Flasks einzigartige Architektur für kleine Webanwendungen.
  • Freie Wahl Ihrer Pakete für ORM, Migrationen usw.
  • Flexible Anwendungsstruktur – platzieren Sie Ihre Dateien dort, wo es für Sie am sinnvollsten ist.
  • Bereitstellung statischer Dateien.
  • WSGI-konform.

Ist Flask das Richtige für Sie?

Wie bereits erwähnt, ist Flask ein minimales Web-Framework, bei dem alles in einzelne austauschbare Komponenten zerlegt ist. Wenn Sie es eilig haben, einen Prototyp zu entwickeln, werden Sie viel Zeit damit verbringen, triviale Entscheidungen über Datenbank, Ordnerstruktur, Routing usw. zu treffen, was sich als kontraproduktiv erweisen kann. Flask ist am besten geeignet, wenn Sie an einem stabilen, ernsthaften Projekt mittleren bis großen Umfangs arbeiten, insbesondere an REST-APIs.

Bottle

Wenn Sie der Meinung waren, dass Flasks Ansatz nicht minimal genug ist und Sie noch mehr Kontrolle wünschen, dann sollten Sie sich Bottle ansehen.

Bottle reduziert den Funktionsumfang noch weiter, bis hin zu dem Punkt, an dem die einzige Abhängigkeit die Python-Standardbibliothek ist. Dies bedeutet, dass Sie kein Pip installieren müssen, obwohl Sie dies wahrscheinlich bald tun werden. Deshalb ist Bottle für einige Leute eine attraktive Option:

  • Bereitstellung in einer einzigen Datei. 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.
  • Es verwendet seine eigene Template-Engine, die durch Jinja2, Mako oder Cheetah ersetzt werden kann.
  • Unterstützung für Formulare, Header, Cookies und Datei-Uploads.
  • Integrierter Webserver, der einfach ausgetauscht werden kann.

Ist Bottle das Richtige für Sie?

Wenn Sie eine sehr kleine App (z. B. weniger als 500 Codezeilen) ohne besondere Anforderungen entwickeln, kann Bottle sehr sinnvoll sein. Es ist ein völlig unkomplizierter Ansatz für die Entwicklung von Webanwendungen, aber in der Praxis werden Sie feststellen, dass Bottle Sie eher behindert als unterstützt. Das liegt daran, dass sich die reale Welt ständig verändert und Sie schnell mit neuen Anforderungen konfrontiert werden. An diesem Punkt wird es lästig, alles in einer einzigen Datei zu packen.

Auch wenn Sie denken, dass Bottle und Flask fast identisch sind, haben Sie Recht. Vorschläge zur Zusammenführung der 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 schwer 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 Werkzeugen (einschließlich Web-Frameworks) besteht, die nach der Zope-Philosophie erstellt und von der Zope Corporation gepflegt werden.

Zope verfügt über mehrere interessante Komponenten und Funktionen, die es für die Entwicklung von Unternehmensanwendungen geeignet machen:

  • Eine Komponentenregistrierungs- und Erkennungsarchitektur zur Konfiguration einer großen Anwendung.
  • ZODB – (die einzige) Objektdatenbank für Python zum nativen Speichern von Objekten.
  • Ein vollwertiges Framework und Standards für Content-Management-Systeme.
  • Eine Reihe von Webanwendungs-Frameworks – das kanonische ist immer noch Zope, obwohl mehrere neue Frameworks (wie Grok) darauf aufbauen.
  • Starke Standards für Softwareentwicklung, -freigabe und -wartung.

Ist Zope das Richtige für Sie?

Wenn Sie nach einer stark strukturierten Umgebung zum Erstellen wirklich großer Anwendungen suchen, ist Zope gut geeignet. Das heißt, Sie werden auch auf einige Herausforderungen stoßen. Während Zope sich ständig weiterentwickelt, ist die Community sehr klein, sodass viele Python-Entwickler noch nie davon gehört haben. Es ist schwierig, Tutorials und umfangreiche Dokumentationen zu finden, seien Sie also darauf vorbereitet, viel zu recherchieren (obwohl die Community sehr hilfsbereit ist!). Außerdem sind Python-Entwickler möglicherweise nicht bereit, Zope zu lernen und ihre Fähigkeiten zu „verwässern“.

TurboGears

TurboGears ist ein sehr flexibles Framework mit einer wirklich zusammensetzbaren Architektur. Es ist ein Framework, das sich an Ihre Bedürfnisse anpasst. Sie können es verwenden, um eine Anwendung mit einer einzelnen Datei oder einen Multi-Tenant-Giganten zu erstellen.

TurboGears verfügt über 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 einzigen Datei und skalieren Sie nach Bedarf.
  • Ein leistungsstarkes ORM (SQLAlchemy, das ausgereifter und leistungsfähiger ist als das ORM von Django).
  • Steckbare Architektur basierend auf der WSGI-Spezifikation.
  • Integrierte Unterstützung für Datenbank-Sharding.
  • Eine funktionsgetriebene Schnittstelle im Gegensatz zu tiefen, starren objektorientierten Hierarchien.

Ist TurboGears das Richtige für Sie?

Wenn Sie gerne experimentieren und ein bewährtes, ausgereiftes und robustes Framework suchen, das nicht im Mittelpunkt des aktuellen Hypes steht, ist TurboGears das Richtige für Sie. Es genießt in der Community hohes Ansehen und verfügt über eine vollständige und umfangreiche Dokumentation. TurboGears ist nicht eigensinnig, was bedeutet, dass die anfängliche Einrichtung und Konfiguration etwas länger dauern kann, aber es ist das ideale Framework für die Entwicklung von Unternehmensanwendungen.

Web2py

Web2py begann als Hobbyprojekt und wurde 2007 veröffentlicht. Ziel war es, die Webentwicklung einfach und für jeden zugänglich zu machen.

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

Man könnte es fast als Android Studio betrachten, das eher eine vollständige Umgebung als nur ein Framework ist. Einige nette Funktionen von Web2py sind:

  • Praktisch keine Lernkurve.
  • Minimaler Kern (nur 12 Objekte), den man sogar auswendig lernen kann!
  • Pure-Python-Templates.
  • Schutz vor XSS, CSRF und anderen Angriffen.
  • Eine angenehme und konsistente API.

Ist Web2py das Richtige 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 Stellenangebote und die Unit-Testing-Unterstützung ist nicht sehr gut. Das heißt, Ihnen könnten die Code-API und die Gesamterfahrung gefallen, die das Framework bietet, insbesondere wenn Sie REST-APIs erstellen.

CherryPy

CherryPy ist ein weiteres Mikro-Framework, das darauf abzielt, grundlegende Framework-Funktionalitäten bereitzustellen und sich schnell aus dem Weg zu räumen.

Obwohl es mit anderen Mikro-Frameworks wie Flask vergleichbar ist, bietet CherryPy einige Unterschiede:

  • Es enthält einen integrierten Multithread-Server (etwas, das auf der Wunschliste von Flask steht).
  • 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 die üblichen Dinge, die man von einem Web-Framework erwartet.

Ist CherryPy das Richtige für Sie?

Wenn Sie hauptsächlich RESTful-Dienste entwickeln, ist CherryPy ein ernstzunehmenderer Konkurrent als Flask. Es ist ein Framework, das seit einem Jahrzehnt existiert, schön gereift ist und sich sowohl für kleine als auch für große Anwendungen eignet.

Sanic

Der Aufstieg von Node und seinem asynchronen Programmiermodell hat viele Communities, einschließlich Python, ins Hintertreffen geraten lassen. Als Reaktion darauf ist eine Flut von asynchronen Web-Frameworks entstanden, Sanic ist eines davon.

Sanic ist stark von Flask inspiriert, indem es sich Routen-Dekoratoren, Blueprints und andere grundlegende Ansätze ausgeborgt hat. Und sie scheuen sich nicht, dies zuzugeben. Was Sanic für Flask-Fans anbietet, ist echtes nicht blockierendes I/O, um die Leistungsniveaus einer Node-Anwendung zu erreichen. Mit anderen Worten, Sanic ist Flask mit Async/Await-Unterstützung!

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

Wie Sie sehen können, wird CherryPy praktisch abgewürgt und weist eine hohe Fehlerrate auf, sobald die Parallelitätsrate 50 pro Sekunde überschreitet.

Ist Sanic das Richtige für Sie?

Obwohl die Leistungsmerkmale von Sanic alles andere in den Schatten stellen, ist es möglicherweise 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 an hohe Parallelität oder asynchrone Vorgänge zu denken. Wenn Ihr bevorzugtes ORM beispielsweise keine asynchronen Operationen unterstützt, wird der Sinn der Verwendung von Sanic zunichte gemacht.

Aus diesen Reife- und Verfügbarkeitsgründen werden wir keine weiteren asynchronen Frameworks in Python untersuchen.

Masonite

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 es an der Zeit ist, Masonite etwas mehr Aufmerksamkeit zu schenken.

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

Entwickler von Laravel (und bis zu einem gewissen Grad auch Rails) werden sich wie zu Hause fühlen und wären 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 bietet Masonite einige interessante Features:

  • Ein 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 (namens „craft“) für Scaffolding und laufende Aufgaben.
  • Erstklassige Unterstützung für Unit-Tests.

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

Ist Masonite das Richtige für Sie?

Masonite ist im Vergleich zu Django noch relativ jung, daher kann es in keinem Fall Django vorgezogen werden. Das heißt, wenn Sie den Rails-Way (oder den Laravel-Way) bevorzugen, werden Sie schätzen, was Masonite zu bieten hat. Es ist ideal für das schnelle Prototyping, bei dem alles vorkonfiguriert und leicht zu ändern sein muss.

Fazit

Es gibt eine Vielzahl von Python-Frameworks, ob groß oder klein. Während Sie für ein kleines Projekt so ziemlich alles verwenden können, hat eine Unternehmensanwendung Anforderungen, die viele dieser Frameworks nicht 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 gute Architekt ein Mikro-Framework verwenden und seine eigene Architektur implementieren. Und genau das passiert in der Praxis, was den Erfolg von Flask und ähnlichen Ansätzen erklärt.

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

Erkunden Sie als Nächstes einige der spezialisierten Python-Frameworks für die Entwicklung von APIs.