Python 3 portar flujo de trabajo?
-
23-08-2019 - |
Pregunta
Tengo un pequeño proyecto que quiero probar la migración a Python 3 - ¿cómo puedo ir sobre esto
? He hecho hizo que la ejecución de códigos sin advertencias utilizando python2.6 -3
(eliminación de la mayoría de las llamadas .has_key()
), pero no estoy seguro de la mejor manera de utilizar la herramienta 2to3.
Utilice la herramienta de 2to3 para convertir el código fuente a la sintaxis 3.0. No edite manualmente la salida!
Running 2to3 something.py
da salida a un diff, que no es útil por sí mismo. Usando la bandera --write
sobrescribe something.py y crea una copia de seguridad .. Parece como si tuviera que hacer ..
2to3 something.py
python3.0 something.py
mv something.py.bak something.py
vim something.py
# repeat
.. que es un poco de ida y una pelea - idealmente podría hacer algo como ..
mv something.py py2.6_something.py # once
2to3 py2.6_something.py --write-file something.py
vim py2.6_something.py
# repeat
Solución
Aha, se puede canalizar la salida 2to3 al comando patch
, que puede escribir el archivo modificado a un nuevo archivo:
mv something.py py2.6_something.py
2to3 py2.6_something.py | patch -o something.py
Otros consejos
2.x debe ser su base de código de desarrollo activo, por lo 2to3 realmente debe funcionar en una rama o un directorio temporal. No estoy seguro de por qué te gustaría tener las versiones 2.xy 3.x por ahí en el mismo directorio. distutils tiene un script que se ejecutará build_2to3 2to3 en un 3,0 instalación.