Migration von Python 2 zu Python 3: Ein Leitfaden zur Vorbereitung auf die Frist 2020

Python frisst die Welt: Wie das Nebenprojekt eines Entwicklers zur heißesten Programmiersprache wurde. Guido van Rossum war frustriert über die Mängel der Programmiersprache und schuf Python. Mit der Sprache, die jetzt von Millionen verwendet wird, spricht Nick Heath mit van Rossum über Pythons Vergangenheit und untersucht, was als nächstes kommt.

Python zieht möglicherweise neue Entwickler mit einer Rekordrate an, aber ein potenzielles Sicherheitsproblem droht für Entwickler, die die neueste Version der Programmiersprache nicht übernommen haben.

Entwicklerinhalte müssen unbedingt gelesen werden

  • Java und JavaScript dominierten in den 2010er Jahren die Softwareentwicklung
  • So werden Sie Entwickler: Ein Spickzettel
  • 10 Möglichkeiten, um Entwickler-Burnout zu verhindern (kostenloses PDF)
  • Python frisst die Welt: Wie das Nebenprojekt eines Entwicklers zur heißesten Programmiersprache der Welt wurde

Die Einführung von Python 3 im Jahr 2008 modernisierte die jahrzehntealte Sprache, brach jedoch auch die Kompatibilität mit früheren Versionen von Python.

Nur noch vier Monate bis zum Ende der Unterstützung für Python 2 gibt es noch einige Entwickler und Projekte, die nicht auf Python 3 umgestellt haben.

Der Druck, diesen Schritt zu tun, wächst, da der Python 2-Interpreter und die gebündelten Bibliotheken ab dem 1. Januar 2020 keine Fehlerbehebungen mehr erhalten.

Die Notwendigkeit einer Migration wirkt sich möglicherweise auf viele Entwickler aus. Pythons unaufhaltsamer Aufstieg ist weithin anerkannt - vor allem aufgrund seiner Verwendung für maschinelles Lernen - und wird voraussichtlich bald die beliebteste Programmiersprache der Welt sein.

"Unternehmen mit Anwendungen, die unter einer beliebigen Version von Python 2 ausgeführt werden, müssen migriert werden - und je früher, desto besser", sagte Bart Copeland, CEO des Softwareentwicklungs-Supportunternehmens ActiveState.

"Da die Migration auf eine neue Version von Python jedoch ein bedeutendes Unterfangen darstellt, sollte sie nicht überstürzt werden. Eine Migration vor Ablauf der Frist hilft Entwicklern vielmehr, sich die dafür erforderliche Zeit zu nehmen und unvorhergesehene Störungen frühzeitig zu berücksichtigen." ""

Python frisst die Welt: Wie das Nebenprojekt eines Entwicklers zur heißesten Programmiersprache der Welt wurde (Titelstory PDF)

Eines der größten potenziellen Probleme ist die Anzahl der Python 2-Versionen beliebter Softwarepakete, die noch heruntergeladen werden.

"Selbst wenn nur ein Teil dieser Downloads in Live-Projekten verwendet wird, könnte Python 2 EOL (End of Life) möglicherweise die Sicherheit von Millionen von Systemen beeinträchtigen", schreibt das National Cyber ​​Security Center (NCSC) in einem Gutachten.

Inmitten beliebter Pakete - die monatlich millionenfach heruntergeladen wurden - waren etwas mehr als 40% der Downloads für Scikit-Learn Python 2-Versionen, 37% für das TensorFlow-Paket und etwas mehr als 30% für das Flask-Paket.

Laut Copeland von ActiveState gibt es immer noch bedeutende Bereitstellungen von Python 2-Anwendungsdiensten und -Skripten.

"Wir haben mit vielen Organisationen gesprochen, die sich Sorgen über die bevorstehende Python 2 EOL machen. Im Allgemeinen sind sie besorgt über unvermeidliche Code-Schwachstellen und die Auswirkungen, die sie auf die Anwendungssicherheit haben werden", sagt er.

Glücklicherweise bedeutet die Kompatibilität mit Python 3 nicht, den Code-Großhandel zu ersetzen. Es ist möglich, Python 2.6-Code ab einem Format zu ändern, das auch mit einem Python 3-Interpreter kompatibel ist.

"Die empfohlene Vorgehensweise besteht darin, schrittweise zu modernisieren, um Fehler schrittweise zu beheben", sagt Copeland.
Fintan Ryan, Research Director des Application Platform Strategies-Teams des Analystenunternehmens Gartner, ist der Ansicht, dass das Streben nach generationenübergreifender Kompatibilität eine gute Möglichkeit ist, sich auf die Migration vorzubereiten.

"Als Zwischenschritt ist es definitiv etwas, das getan werden kann, und für viele Unternehmen mit viel Code kann es so weit sein, wie sie können", sagt er.

Weitere Informationen zur Python-Berichterstattung (TechRepublic on Flipboard)

So bereiten Sie sich auf die Migration vor

Die Python Software Foundation bietet bereits eine umfassende Anleitung zum Erreichen einer generationenübergreifenden Kompatibilität für Unternehmen, die Python 2 und Python 3 nebeneinander ausführen müssen. Hier finden Sie eine Zusammenfassung der Empfehlungen.

  1. Löschen Sie die Unterstützung für Python 2.6 und älter, da die Migration von Python 2.7 viel einfacher ist. Wenn Sie Python 2.6 ausführen müssen, sollten Sie die Verwendung der Six-Bibliothek prüfen, um die Kompatibilität mit Python 3 zu gewährleisten.

  2. Stellen Sie sicher, dass Ihre Datei setup.py ordnungsgemäß angibt, welche Versionen von Python Ihre Codebasis unterstützt, wobei die Datei mindestens Programmiersprache :: Python :: 2 :: Nur als Fundklassifizierer enthält.

  3. Ihre Testsuite sollte mindestens 80% Code abdecken, der Name, der angibt, wie viel Ihres Quellcodes während des Tests ausgeführt wird. Wenn Sie Ihre Codeabdeckung nicht kennen, verwenden Sie die von Coverage.py bereitgestellten Tools.

  4. Lernen Sie die Unterschiede zwischen Python 2 und Python 3 kennen, indem Sie das Dokument " Was gibt's Neues?" Von Python und das kostenlose Buch "Portierung nach Python 3" lesen.

  5. Verwenden Sie Futurize oder Modernize, um Ihren Python 2-Code Python 3-kompatibel zu machen, und lesen Sie die Dokumentation, damit Sie die Probleme beheben können, die diese nicht lösen können.

  6. Stellen Sie sicher, dass Sie Änderungen an der Behandlung der Ganzzahldivision zwischen Python 2 und 3 berücksichtigen. Beispiel: In Python 2 9/2 = 4 und in Python 3 9/2 = 4.5 . Wenn Sie in Ihrem Code die Importabteilung von __future__ und den Operator // für die Ganzzahldivision verwendet haben, ist Ihr Code bereits Python 3-kompatibel.

  7. Python 3 nimmt Änderungen vor, an denen Daten mit dem Typ str verwendet werden können, um die Unterscheidung zwischen Text- und Binärdaten klarer zu machen. Leider müssen Sie für Code, der sowohl Text- als auch Binärdaten verarbeitet, die folgenden Schritte ausführen, um sicherzustellen, dass Ihr Code kompatibel ist. Eine optionale statische Typprüfung wie mypy kann auch dazu beitragen, festzustellen, ob Sie Binärdaten in einer Python-Version im Vergleich zu einer anderen missbrauchen.

  8. Wenn Sie Code ausführen, der sich je nach ausgeführter Python-Version unterschiedlich verhält, sollten Sie überprüfen, ob eine bestimmte Funktion, die in Python 3 unterstützt wird, ausgeführt werden kann, anstatt zu überprüfen, ob sys.version_info 0 gleich 3 ist.

  9. Verwenden Sie die folgenden Anweisungen oben in allen neuen Modulen, die Sie erstellen, um neuen Code, der mit Python 3 geschrieben wurde, auszurichten und seine Kompatibilität sicherzustellen: von __future__ import absolute_import, von __future__ import division und von __future__ import print_function. Das Pylint-Projekt und sein --py3k-Flag verhindern außerdem, dass sich Inkompatibilitäten in den Code einschleichen.

  10. Überprüfen Sie mithilfe der vom caniusepython3-Projekt bereitgestellten Tools, welche Software-Abhängigkeiten Sie daran hindern, Python 3 zu unterstützen.

  11. Aktualisieren Sie nach der Migration des Codes Ihre Klassifizierer in der Datei setup.py so, dass sie Programmiersprache :: Python :: 3 enthalten, um anzuzeigen, dass Ihr Code Python 2 und 3 unterstützt.

  12. Stellen Sie sicher, dass Ihr Code mit Python 2 und 3 kompatibel bleibt, indem Sie Tests mit tox automatisieren und dieses Setup in Ihr kontinuierliches Integrationssystem integrieren.

Für die Migration von Python 2 zu Python 3-Code empfiehlt der NCSC auch die 2to3-Anwendung, die versucht, den Prozess zu automatisieren.

Copeland fügt hinzu, dass Organisationen, die sich auf Data Science konzentrieren, auch die Einführung von Python 3 planen sollten, "da alle Entwickler von Data Science-Paketen ihre Pläne für eine Migration angekündigt haben", einschließlich derjenigen, die hinter den beliebten Paketen NumPy, Requests und TensorFlow stehen.

Es gibt auch Anzeichen dafür, dass nach Jahren, in denen Entwickler an Python 2.0 festgehalten haben, die Mehrheit der Python-Entwickler jetzt Python 3 verwendet. JetBrains stellt fest, dass 84% ​​der Programmierer den Wechsel vorgenommen haben.

Diejenigen, die bis zum Stichtag Januar 2020 nicht von Python 2 migriert sind, können auch zusätzliche Unterstützung von Drittanbietern bezahlen. ActiveState bietet Unterstützung sowohl für die Python 2-Kernsprache und Standardbibliotheken als auch für Backport-Sicherheitskorrekturen implementiert in Python 3-Kernsprachencode und Paketen von Drittanbietern.

Neben den Sicherheitsvorteilen der Umstellung auf Python 3 hat NCSC eine Liste nützlicher Funktionen erstellt, die in der neuesten Version enthalten sind, darunter die Ausbeute an Ausdrücken, Unicode- Zeichenfolgen, eine leistungsfähigere Druckfunktion und die Komplexität, da Anweisungen leichter zu lesen sind.

Wenn Sie wissen möchten, wie lange Sie noch übrig sind, können Sie sich diese Countdown-Uhr ansehen.

Innovations-Newsletter

Informieren Sie sich über Smart Cities, KI, Internet der Dinge, VR, AR, Robotik, Drohnen, autonomes Fahren und weitere der coolsten technischen Innovationen. Lieferung mittwochs und freitags

Heute anmelden

Siehe auch

  • So werden Sie Entwickler: Ein Spickzettel (TechRepublic)
  • Implementierung von DevOps: Ein Leitfaden für IT-Profis (kostenloses PDF) (TechRepublic)
  • Spickzettel zum Telefoninterview: Softwareentwickler (TechRepublic Premium)
  • Programmiersprachen: Entwickler enthüllen am meisten geliebt, am meisten verabscheut, was sich am besten auszahlt (ZDNet)
  • Es erfordert Arbeit, um Ihre Daten online privat zu halten. Diese Apps können helfen (CNET)
  • Programmiersprachen und Ressourcen für Entwicklerkarrieren (TechRepublic on Flipboard)

© Copyright 2020 | mobilegn.com