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": -)

War es hilfreich?

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:

  
      
  1. (Voraussetzung :) mit hervorragender Testabdeckung starten.
  2.   
  3. 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.
  4.   
  5. (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.
  6.   
  7. 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.
  8.   
     

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:

http://python3porting.com/

Kurz gesagt:

  1. Stellen Sie sicher, dass alle Drittanbieter-Bibliotheken für Python 3 zur Verfügung stehen.
  2. 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.
  3. Je höher die Testabdeckung ist, desto besser.
  4. Stellen Sie sicher, es läuft ohne Warnungen unter "Python 2.7 -3".
  5. Führen Sie nun 2to3.
  6. 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!“

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top