Heim  >  Artikel  >  Backend-Entwicklung  >  Wie aktualisiere ich eine große Python 2-Codebasis auf Python 3?

Wie aktualisiere ich eine große Python 2-Codebasis auf Python 3?

WBOY
WBOYnach vorne
2023-09-04 17:09:081153Durchsuche

如何将一个大型的Python 2代码库更新到Python 3?

Einführung

Python startete ursprünglich als Python Version 2, auch bekannt als „Legacy Edition“. Die letzte Version von Python2 war Python2.7, die 2020 eingestellt wurde. Python 3.x wurde als Ersatz mit zahlreichen Verbesserungen und Fehlerbehebungen im Vergleich zur Python 2.x-Version eingeführt. Ältere Legacy-Versionen von Python sind LTS-Software, was bedeutet, dass sie langfristig unterstützt werden. Allerdings sind Python 3.x-Versionen abwärtsinkompatible Versionen, sodass Sie Ihre Python 2-Codebasis auf Python 3 aktualisieren müssen, um die Benutzerfreundlichkeit und Unterstützung von Python 3 in vollem Umfang nutzen zu können. Als Hauptgründe für Entwickler für ein Upgrade auf Python 3 können a) Entwicklerproduktivität (da es dynamisch typisiert ist, ist es sehr einfach zu erlernen und zu programmieren) und b) Leistungsverbesserungen, einschließlich einer schnelleren Leistung bei den meisten Aufgaben, genannt werden.

So aktualisieren Sie auf Python3

  • Schreiben Sie die Codebasis in Python 3 neu

  • Verwenden Sie den Transplantationsprozess

Methode 1: Die gesamte Codebasis neu schreiben

Diese Methode zum Aktualisieren Ihrer Codebasis ist nur dann sinnvoll, wenn Sie Software in kleinem Maßstab erstellen. Dies liegt daran, dass jeder, der eine Codebasis aktualisiert, ein allgemeines Verständnis davon haben muss, wie die gesamte Codebasis funktioniert. Das Umschreiben Ihres Codes in Python 3 kann dazu beitragen, die Leistungsfähigkeit und Benutzerfreundlichkeit von Python 3 zu nutzen und Ihren Code kürzer und effizienter zu machen. Wenn Sie außerdem andere Methoden zum Migrieren Ihrer Codebasis verwenden, kann es zu Problemen bei der Implementierung von Python 3.x-Funktionen kommen, bis Sie die gesamte Codebasis migrieren. Das Umschreiben der Codebasis löste dieses Problem und gab uns außerdem die Möglichkeit, alle Codeblöcke zu aktualisieren, die wir schon lange machen wollten.

Diese Methode funktioniert jedoch nur, wenn die Codebasis eine kleine skalierbare Größe hat.

Methode 2: Nutzen Sie den Portierungsprozess

Andererseits können wir den in der Dokumentation offiziell beschriebenen Python-Portierungsprozess verwenden. Auf hohem Niveau ist diese Transplantation ein dreistufiger Prozess -

  • Automatische Konvertierung

  • Manuelle Änderungen

  • Laufzeitüberprüfung und Korrekturen

Voraussetzung für all dies ist jedoch, dass Sie zunächst Python 3 und die zugehörigen Pakete und Bibliotheken installieren. Schauen wir uns den Windows-Prozess an.

Herunterladen und installieren -

https://www.python.org/ftp/python/3.7.4/python-3.7.4.exe

Dadurch wird die Python-Software installiert. Danach können Sie den Portierungsprozess mit offiziellen Portierungsmodulen oder Software von Python 2 auf Python 3 (z. B. 2to3 usw.) starten. Dadurch wird der Code auf Python 3 portiert, Sie müssen sich jedoch der folgenden Probleme bewusst sein -

Aktualisierte Setup.py-Datei, um die Python3-Kompatibilität anzuzeigen

Der Klassifikator in der Installationsdatei muss aktualisiert werden, um die Programmiersprache::Python::3 einzuschließen. Dadurch kann nur Python 3 oder eine Version davon in der Codierungsumgebung vorhanden sein (versionsspezifische Klassifikatoren sind ebenfalls verfügbar), wodurch ein unnötiges Zurückverfolgen in Python 2-Code verhindert wird. Dies wird wesentlich dazu beitragen, die Codeintegrität aufrechtzuerhalten und zu ermöglichen, dass die gesamte Codebasis nur in Python 3 existiert.

Verwenden Sie moderne oder futuristische Skripte

Da Python 3 nicht abwärtskompatibel ist, müssen alle Skripte in der Codebasis auf den Python 3-Standard aktualisiert werden. Hier können wir zu Beginn jedes Moduls, das aktualisiert werden muss, ein Skript wie Modernize oder Futurize verwenden. Nicht alle Python-Funktionen werden in Modulen verwendet, einige grundlegende Funktionen müssen jedoch modernisiert werden, um den reibungslosen Betrieb jedes Moduls zu gewährleisten. Um auf der sicheren Seite zu sein, empfiehlt die offizielle Python-Dokumentation daher, den folgenden Code hinzuzufügen -

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function 

Dadurch wird sichergestellt, dass unser aktueller Code aufgrund einiger grundlegender Abhängigkeiten nicht beeinträchtigt wird und unter Python 3 nicht mehr funktioniert. Ein besserer Ansatz ist jedoch die Verwendung des Pylink-Projekts, bei dem das Flag --py3k anzeigt, wann unser Code von der Python 3-Kompatibilität abweicht. Dies verhindert, dass Modernize- oder Futurize-Skripte einzeln am Anfang jedes Blocks ausgeführt werden, was zu kürzerem Code und weniger Fehlern führt. Es ist jedoch wichtig zu beachten, dass Pylint nur Python 3.4 oder höher unterstützt.

Verwenden Sie beim Importieren die Funktionserkennung, um die Versionskompatibilität sicherzustellen

In einigen Fällen kann die Codebasis von Python 2 Module enthalten, die nicht in Python 3 ausgeführt werden. Mithilfe der Feature-Erkennung können wir herausfinden, ob frühere Projekte Python 3-Versionen unterstützen. Die Verwendung der Feature-Erkennung anstelle der Versionserkennung zur Überprüfung der richtigen Version, die wir verwenden müssen, ist ein sichererer Ansatz und wird in Zukunft weitere Probleme verhindern.

try:
   from importlib import abc
except ImportError:
   from importlib2 import abc 

Überprüfen Sie beim Vergleich von Binär- und Textdaten

In Python 3 dürfen Text- und Binärdatentypen nicht offensichtlich gemischt werden, da dies zu Fehlern führt. Diese Prüfung kann jedoch mit keiner anderen Python-Bibliothek automatisch durchgeführt werden. Daher ist es besser, einen benutzerdefinierten Codeblock auszuführen, um string- und binärbasierte Daten zu vergleichen. Der Grund dafür ist, dass sich Python 3 Bytes anders verhält als das alte str in älteren Versionen von Python Das Gleiche.

Hat eine gute Testabdeckung

Eine gute Testabdeckung ist wichtig, um Fehler zu vermeiden und die Zeit für die Aktualisierung Ihres Codes zu verkürzen, indem Sie nur dort Änderungen vornehmen, wo sie benötigt werden. Tools wie Coverage.py können in dieser Situation eine große Hilfe sein, indem sie den genauen Ort des Fehlers ermitteln, indem sie den Unterschied zwischen der Ausführung und dem Fehler ermitteln.

Fazit

Hier haben wir uns einige Möglichkeiten angesehen, eine große Software-Codebasis von Python 2 auf Python 3 zu migrieren, zusammen mit einigen Einschränkungen, die wir kennen sollten, und einigen nützlichen Methoden, die wir verwenden können. Der Prozess kann jedoch je nach berücksichtigter Codebasis und den im Projekt verwendeten Bibliotheken und Modulen in gewissem Maße variieren. Mit diesen allgemeinen Schritten können die meisten Codebasen wirklich in Python 3 konvertiert und Python-Code insgesamt auf gute Weise modernisiert werden.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich eine große Python 2-Codebasis auf Python 3?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen