Pregunta

    

Esta pregunta ya tiene una respuesta aquí:

         

Así que con las versiones finales de Python 3.0 (y ahora 3.1), una gran cantidad de personas se enfrentan a la preocupación de cómo actualizar sin perder la mitad de su código base hacia atrás debido a la incompatibilidad.

¿Cuáles son los mejores consejos de la gente para evitar las muchas trampas que darán como resultado casi inevitable de cambiar a la siguiente generación de pitón?

Probablemente un buen lugar para comenzar es "2to3 utilizar para convertir su código Python 2.x 3.x": -)

¿Fue útil?

Solución

En primer lugar, esta pregunta es muy similar a ¿Cómo planea sobre el manejo de la migración a Python 3? . Comprobar las respuestas allí.

También hay una sección de en el Wiki de Python sobre portar aplicaciones a Python 3.x

El Notas de la versión de Python 3.0 contiene una sección acerca de la portabilidad. Estoy citando las puntas allí:

  
      
  1. (Requisito :) Comience con cobertura de la prueba excelente.
  2.   
  3. Puerto de Python 2.6. Esto no debería ser más trabajo que el POR promedio   de Python 2.x a 2. Python (x + 1).   Asegúrese de que pasen todas las pruebas.
  4.   
  5. (:) Aún utilizando 2.6 Encienda el interruptor de la línea de comandos -3. Esto permite a las advertencias acerca de las características que serán   eliminado (o cambio) en 3,0. ejecutar su   nuevo conjunto de pruebas y la solución de código que   se obtiene advertencias acerca hasta que haya   no hay advertencias a la izquierda, y todas sus pruebas   Todavía pasar.
  6.   
  7. Ejecutar el traductor 2to3 fuente-a-fuente sobre su árbol de código fuente.   (Ver 2to3 - Automatizado Python 2 a 3   la traducción del código para más información sobre este   herramienta.) Ejecutar el resultado de la   una traducción en virtud de Python 3.0. A mano   arreglar los problemas pendientes, fijando   problemas hasta todas las pruebas pasan de nuevo.
  8.   
     

No se recomienda para tratar de escribir   código fuente que se ejecuta sin cambios bajo   tanto Python 2.6 y 3.0; que tendría que   utilizar un estilo de codificación muy retorcido,   p.ej. evitando declaraciones de impresión,   metaclases, y mucho más. Si usted es   el mantenimiento de una biblioteca que necesita   apoyar tanto Python 2.6 y Python   3,0, el mejor enfoque es modificar el paso 3 anterior mediante la edición del 2,6   versión del código fuente y correr   el traductor 2to3 de nuevo, en lugar de   la edición de la versión 3.0 de la fuente   código.

Otros consejos

escribo un libro gratis sobre esto. Se puede leer aquí:

http://python3porting.com/

En resumen:

  1. Asegúrese de que todas las bibliotecas de terceros están disponibles para Python 3.
  2. Prepare su código mediante la eliminación de ambigüedades comunes:
    • Uso // si realmente quiere la división entera.
    • Asegúrese de Bandera archivos binarios con la 'b' de la bandera cuando los abra, con claridad indique si quiere decir que los datos sean binarios o no.
  3. Cuanto mayor sea su cobertura de la prueba, mejor.
  4. Asegúrese de que se ejecuta sin advertencias en "Python 2.7 -3".
  5. Ahora ejecute 2to3.
  6. Fijar cualquier error.

Eso es, más o menos.

Sin una razón de peso para actualizar realmente, me gustaría seguir con lo que funciona. Miré a la mejora de las secuencias de comandos que utilizo todos los días y que era demasiado trabajo para ningún beneficio que pudiera ver.

"Si no está roto, no lo arregles!"

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top