Tipps zur Aktualisierung 3.0 Python? [Duplikat]
-
21-08-2019 - |
Frage
Diese Frage bereits eine Antwort hier:
So mit den letzten Versionen von Python 3.0 (und jetzt 3.1), ist eine Menge Leute, die Sorge gegenüber, wie man ohne Verlust der Hälfte ihre Codebasis aufgrund rückwärts Inkompatibilität zu aktualisieren.
Was sind die Menschen am besten Tipps für die vielen Gefahren zu vermeiden, die fast-unweigerlich von einem Wechsel auf die nächste Generation von Python führen?
Wahrscheinlich ein guter Anfang ist "Verwendung 2to3 Ihren Python 2.x-Code konvertieren auf 3.x": -)
Lösung
Als erster diese Frage ist sehr ähnlich wie Wie planen Sie die Migration auf Python 3? zur Handhabung. Schauen Sie sich die Antworten gibt.
Es gibt auch eine Abschnitt in dem Python-Wiki über Anwendungen zu Python 3.x Portierung
Die Release Notes für Python 3.0 enthält einen Abschnitt über die Portierung. Ich zitiere die Tipps gibt:
- (Voraussetzung :) mit hervorragender Testabdeckung starten.
- Port zu Python 2.6. Dies sollte nicht mehr Arbeit als der Durchschnitt por sein von Python 2.x auf Python 2. (x + 1). Stellen Sie sicher, dass alle Tests bestehen.
- (Still 2.6 unter Verwendung von auf dem -3 Kommandozeilenschalter einschalten :). Dies ermöglicht es Warnungen über Funktionen, die sein wird, in 3.0 entfernt (oder Änderung). Führen Sie Ihre Testsuite wieder, und beheben Code, Sie erhalten Warnungen über, bis es keine Warnungen links, und alle Tests noch passieren.
- Führen Sie den 2to3 Source-to-Source-Übersetzer über den Quellcode Baum. (Siehe 2to3 - Automatische Python 2 bis 3 Code Übersetzung für mehr zu diesem Thema Werkzeug.) Führen Sie das Ergebnis der Übersetzung unter Python 3.0. Manuell beheben Sie alle noch offenen Fragen auf, Befestigungs Probleme, bis alle Tests bestanden wieder.
Es ist nicht zu versuchen, empfohlen zu schreiben Quellcode, der unverändert läuft unter sowohl Python 2.6 und 3.0; Sie müßten verwenden, um einen sehr verzerrtes Programmierstil, z.B. print-Anweisungen zu vermeiden, metaclasses, und vieles mehr. Wenn du bist Aufrechterhaltung eine Bibliothek, die benötigt unterstützt sowohl Python 2.6 und Python 3.0, der beste Ansatz ist, indem Sie die 2.6 Schritt 3 oben zu ändern Version des Quellcodes und Laufen die 2to3 Übersetzer wieder statt Bearbeiten der 3.0-Version der Quelle Code.
Andere Tipps
Ich schreibe ein kostenloses Buch darüber. Sie können es hier lesen:
Kurz gesagt:
- Stellen Sie sicher, dass alle Drittanbieter-Bibliotheken für Python 3 zur Verfügung stehen.
- Bereiten Sie Ihren Code durch gemeinsame Mehrdeutigkeiten zu entfernen:
- Verwenden // wenn Sie wirklich Integer-Division soll.
- Stellen Sie sicher, dass Sie Binär-Dateien mit dem ‚b‘ Flag Flag, wenn Sie öffnen sie, klar Wählen Sie falls gewünscht die Daten bedeuten binär oder nicht sein.
- Je höher die Testabdeckung ist, desto besser.
- Stellen Sie sicher, es läuft ohne Warnungen unter "Python 2.7 -3".
- Führen Sie nun 2to3.
- Beheben Sie alle Fehler.
Das ist es, mehr oder weniger.
Ohne wirklich zwingenden Grund für ein Upgrade, würde ich mit dem, was funktioniert. Ich sah die Skripte zu aktualisieren ich täglich benutzen und es war zu viel Arbeit für keinen Nutzen, den ich sehen konnte.
„Wenn es nicht kaputt ist, repariere es nicht!“