Zurück zum Blog

Python 2 End of Life Anfang 2020

Andreas Dickow GF Biz Factory Digitalagentur
Kategorie: Tech Knowhow
Andreas
9.3.2019
4 Minuten Lesezeit

Nach fast 20 Jahren ist es so weit, Python 2 wird offiziell nicht mehr geupdatet. Lange hat man versucht Python 2 weiter am leben zu erhalten, es vergingen über 10 Jahre in denen Python 3 neben Python 2 koexistieren konnte. Doch nun ist es höchste Zeit für ein Update, denn der offizielle Support für Python 2.7 ist am 1.1.2020 ausgelaufen, d.h. Sicherheitslücken werden nicht mehr geschlossen.

Python 2 - warum ist es immer noch so populär

Viele Anwendungen laufen auch heute noch mit Python 2, da es einerseits im Netz umfangreiche Dokumentation zu Python 2 gibt und andererseits eine riesige Auswahl an Open Source Bibliotheken. Nicht jeder Anbieter von Open Source Bibliotheken ging den Schritt zu Python 3, da die Syntax Änderungen zwischen Python 2 und Python 3 doch erheblich waren und der Code ja noch funktionierte. Selbst aktuelle Frameworks wie Django (Version 1.11 LTS) bieten immer noch Support für Python 2.7 (bis April 2020).

Auch die Leistungsfähigkeit von Python 2 Anwendungen ist höher als bei Python 3. Numerische Berechnungen konnten bis zu 30 % schneller ausgeführt werden. Zumal scheuen sich viele vor den Kosten der Migration, da meist nicht unerhebliche Teile der Software angepasst werden müssen. Warum also wechseln?

Python 3 - Gründe für eine Migration

Da Python 3 mittlerweile mehr als 10 Jahre auf dem Markt ist, gibt es eigentlich für alle Probleme Dokumentationen und Bibliotheken. 2017 war hier gefühlt das Jahr, indem Python 3 die Oberhand gewann, nicht zuletzt aufgrund der Migration von großen Libraries, wie Tensorflow und Thrift. Auch das Argument, dass Python 2.7 schneller ist stimmt seit Python 3.7 so nicht mehr. Klar, nicht jede Linux Version führt Python 3.7 oder Python 3.8 unter ihren Standard Repositories, aber mit etwas Mühe lässt es sich auch manuell installieren. Auch bei den Frameworks kommt es allmählich zum Umdenken, während Flask Python 2 noch unterstützt, gibt es bei Zope 5.0 bereits keinen Python 2 Support mehr. Das Django Framework hat sich bereits Ende 2017 dafür entschieden, keine neuen Versionen für Python 2 User mehr zu veröffentlichen.  

Sicherheit vs. Migrationsaufwand

Spätestens dann, wenn für das eingesetzte Framework keine Sicherheits-Updates mehr erhältlich sind, wird es Zeit für die Migration / bzw. eine Neuentwicklung. Wichtig sind hierbei immer, die zu erwartenden Kosten. Häufig ist die bisherige Anwendung bereits derart in die Jahre gekommen, dass der damalige Entwickler nicht mehr zur Verfügung steht, um die Migration selbst durchzuführen. In diesem Fall ist eine Sichtung des bisherigen Umfangs der Anwendung notwendig, um an Hand von Faktoren wie der Länge und der Anzahl von Dateien abzuschätzen wie viel Migrationsaufwand entstehen wird. Auch auf Datenbank Seite können Änderungen notwendig sein, zumal Python 2 Standardmässig mit ASCII Codierung arbeitet, während Python 3 UTF-8 nutzt. Bei Low Level Server Programmierungen, wie mit mod_python war es immer sehr anstrengend, Fehler bei der Codierung von Umlauten zu beheben, sowie auf eine UTF-8 konforme Syntax, beim Abspeichern von Daten in die Datenbank, zu achten - Dies ist bei Python 3 nun viel einfacher!

Fazit

Python 2 ist immer noch weit verbreitet und hat seine treuen Anhänger. Heutzutage sind jedoch viele Argumente wie mangelnder Library Support, fehlende Entwickler-Kompetenzen und schlechte Performance, die in der Vergangenheit gegen Python 3 sprachen, entkräftet worden.
Man kann / sollte daher die End of Life Situation von Python 2 als Chance betrachten, einmal mit den Altlasten aufzuräumen und evtl. bereits bekannte Sicherheitslücken zu stopfen. Da es höchste Eisenbahn ist umzusteigen, lassen sich beim Chef nun einfacher die Argumente finden, um größere Budgets für ein Software Update zu beantragen und gegebenenfalls einmal den Software Wildwuchs aufzuräumen, z.B. durch den Einsatz eines modernen Frameworks.

4 Minuten Lesezeit