Python 3 Portierung Workflow?
-
23-08-2019 - |
Frage
Ich habe ein kleines Projekt mag ich Python versuchen 3 portieren - wie gehe ich über die
? Ich habe gemacht, den Code laufen ohne Warnungen gemacht python2.6 -3
mit (meist .has_key()
Anrufe zu entfernen), aber ich bin nicht sicher, der beste Weg, um das 2to3-Tool zu verwenden.
Mit dem 2to3-Tool dieses Quellcode auf 3,0 Syntax konvertieren. Sie nicht manuell die Ausgabe bearbeiten!
2to3 something.py
Lauf gibt einen diff, die auf seine eigenen nicht sinnvoll ist. Mit Hilfe der --write
Flag something.py überschreibt und erstellt ein Backup .. Es scheint, wie ich zu tun haben ..
2to3 something.py
python3.0 something.py
mv something.py.bak something.py
vim something.py
# repeat
.., das ist ein bisschen rund-a-Kampf - idealerweise ich so etwas wie .. tun könnte
mv something.py py2.6_something.py # once
2to3 py2.6_something.py --write-file something.py
vim py2.6_something.py
# repeat
Lösung
Aha, Sie können über die Pipeline das 2to3-Ausgang mit dem patch
-Befehl, der die geänderte Datei in eine neue Datei schreiben kann:
mv something.py py2.6_something.py
2to3 py2.6_something.py | patch -o something.py
Andere Tipps
2.x sollte Ihre Code-Basis der aktiven Entwicklung sein, so 2to3 sollte wirklich in einem Zweig oder temporäres Verzeichnis ausgeführt werden. Ich bin mir nicht sicher, warum Sie die 2.x und 3.x Versionen rumliegen im gleichen Verzeichnis haben wollen würden. distutils hat einen build_2to3 Skript, das 2to3 läuft auf einem 3.0 installieren.