La migración de Python 2 a Python 3: Estás listo para el cambio

Python puede estar atrayendo a nuevos desarrolladores a un ritmo récord, pero hay un problema de seguridad potencial que acecha a aquellos que no han adoptado la última versión del lenguaje de programación.

La introducción de Python 3 en 2008 modernizó el antiguo lenguaje de décadas, pero también rompió la compatibilidad con las versiones anteriores de Python.

Con tan solo cuatro meses por delante antes de que finalice el soporte para Python 2, aún hay algunos desarrolladores y proyectos que no han realizado el cambio a Python 3.

La presión para hacer el cambio está creciendo, ya que el intérprete de Python 2 y las bibliotecas incluidas dejarán de recibir correcciones de errores a partir del 1 de enero de 2020.

La necesidad de migrar afectará potencialmente a muchos desarrolladores. El crecimiento imparable de Python es ampliamente reconocido, en gran parte impulsado por su uso en el aprendizaje automático, y algunos predicen que pronto se convertirá en el lenguaje de programación más popular del mundo.

"Las empresas con aplicaciones en cualquier versión de Python 2 deben migrar, y cuanto antes mejor", dijo Bart Copeland, CEO de la empresa de soporte para el desarrollo de software ActiveState.

Cómo cambiar el tiempo de espera de inactividad en GNOME usando la línea de comandos

"Sin embargo, debido a que la migración a una nueva versión de Python es un proceso importante, no debe apresurarse. Migrar antes de la fecha límite ayudará a los desarrolladores a tomar el tiempo necesario para hacerlo bien y tener en cuenta cualquier problema imprevisto con suficiente antelación".

Uno de los mayores problemas potenciales es la cantidad de versiones Python 2 de paquetes de software populares que aún se están descargando.

"Incluso si solo una parte de estas descargas se utiliza en proyectos en vivo, el Fin de Vida de Python 2 podría afectar potencialmente la seguridad de millones de sistemas", escribe el Centro Nacional de Seguridad Cibernética (NCSC) en un aviso.

Entre los paquetes populares, que se descargan millones de veces cada mes, más del 40% de las descargas de scikit-learn son versiones Python 2, al igual que el 37% para el paquete TensorFlow, y un poco más del 30% para el paquete Flask.

Copeland de ActiveState afirma que todavía existen implementaciones significativas de aplicaciones y scripts de Python 2.

"Hemos hablado con muchas organizaciones preocupadas por el próximo Fin de Vida de Python 2. Universalmente, están preocupados por las posibles vulnerabilidades del código y el impacto que tendrán en la seguridad de las aplicaciones", dice.

Cómo ocultar objetos no deseados o difuminar rostros en tus videos con Adobe Premiere Pro

Afortunadamente, ser compatible con Python 3 no significa reemplazar por completo el código, ya que es posible modificar el código de Python 2.6 en adelante para que también sea compatible con un intérprete de Python 3.

"El curso de acción recomendado es modernizarse gradualmente para abordar los errores progresivamente", dice Copeland. Fintan Ryan, director de investigación del equipo de Estrategias de la Plataforma de Aplicaciones de la firma de análisis Gartner, sostiene que apuntar a la compatibilidad intergeneracional es una buena manera de prepararse para la migración.

Índice de Contenido
  1. Cómo prepararse para la migración
  2. También te puede interesar:

Cómo prepararse para la migración

La Python Software Foundation ya proporciona una guía exhaustiva sobre cómo lograr la compatibilidad intergeneracional para las organizaciones que necesitan ejecutar tanto Python 2 como 3 lado a lado, y aquí se resume algunos de sus consejos:

  1. Abandona el soporte para Python 2.6 o versiones anteriores, ya que es mucho más fácil migrar desde Python 2.7. Si tienes que ejecutar Python 2.6, considera usar la biblioteca "six" para la compatibilidad con Python 3.

  2. Asegúrate de que tu archivo setup.py especifique correctamente qué versiones de Python son compatibles con tu base de código. El archivo debe incluir al menos "Programming Language :: Python :: 2 :: Only" como un clasificador "trove".

  3. Tu conjunto de pruebas debe tener una cobertura de código de al menos el 80%, es decir, cuánto de tu código fuente se ejecuta durante las pruebas. Si no sabes la cobertura de tu código, utiliza las herramientas proporcionadas por coverage.py.

    Cómo sincronizar tus citas del calendario entre Outlook y tu dispositivo iOS
  4. Conoce las diferencias entre Python 2 y Python 3 leyendo "What's New" de Python y el libro gratuito "Porting to Python 3".

  5. Utiliza herramientas como "Futurize" o "Modernize" para hacer que tu código de Python 2 sea compatible con Python 3. Asegúrate de leer la documentación para que puedas resolver los problemas que estas herramientas no pueden manejar.

  6. Asegúrate de adaptarte a los cambios en cómo se maneja la división de enteros entre Python 2 y 3. Por ejemplo, en Python 2 "9 / 2 = 4" y en Python 3 "9 / 2 = 4.5". Si has estado usando "from __future__ import division" en tu código y el operador "//" para la división de enteros, tu código ya será compatible con Python 3.

  7. Python 3 realiza cambios en qué datos se pueden utilizar con el tipo "str" con el fin de hacer más clara la distinción entre datos de texto y datos binarios. Desafortunadamente, para el código que trata tanto con datos de texto como binarios, deberás seguir los siguientes pasos para asegurarte de que tu código sea compatible. También puede ser útil utilizar un comprobador de tipos estáticos opcional, como "mypy", para determinar si estás utilizando los datos binarios incorrectamente en una versión de Python en comparación con otra.

  8. Cuando ejecutes código que se comporta de manera diferente según la versión de Python que se está ejecutando, es mejor verificar si se puede ejecutar una característica específica que es compatible con Python 3 en lugar de verificar si "sys.version_info[0]" es igual a 3.

  9. Para ayudar a alinear cualquier nuevo código que se escriba con Python 3 y asegurar su compatibilidad, utiliza las siguientes instrucciones al comienzo de cualquier nuevo módulo que crees: "from __future__ import absolute_import, from __future__ import division" y "from __future__ import print_function". El proyecto Pylint y su indicador "--py3k" también evitarán que se produzcan incompatibilidades en el código.

    Elegir entre PowerShell Core y PowerShell: La guía definitiva para tomar la mejor decisión
  10. Verifica qué dependencias de software te impedirán admitir Python 3 utilizando las herramientas proporcionadas por el proyecto "caniusepython3".

  11. Una vez que hayas migrado el código, actualiza los clasificadores en el archivo setup.py para que contengan "Programming Language :: Python :: 3" y así indicar que tu código es compatible con Python 2 y 3.

  12. Asegúrate de que tu código siga siendo compatible con Python 2 y 3 automatizando las pruebas utilizando "tox" e integrando esta configuración con tu sistema de integración continua.

Para migrar el código de Python 2 a Python 3, el NCSC también recomienda la aplicación "2to3", que intenta automatizar el proceso.

Copeland añade que las organizaciones enfocadas en la ciencia de datos también deberían planificar adoptar Python 3, "ya que todos los creadores de paquetes de ciencia de datos han anunciado sus planes de migración" para 2020, incluidos aquellos detrás de los paquetes populares NumPy, Requests y TensorFlow.

También hay señales de que, después de años de que los desarrolladores se aferraran a Python 2.0, la mayoría de los desarrolladores de Python ahora están utilizando Python 3, ya que JetBrains encontró que el 84% de los programadores han realizado el cambio.

Cómo Dropbox mejoró la productividad y el mantenimiento de su código Python

Aquellos que no hayan migrado de Python 2 antes de que se cumpla la fecha límite en enero de 2020 también pueden optar por pagar por soporte adicional de terceros, con ActiveState ofreciendo soporte tanto para el núcleo del lenguaje Python 2 como para las bibliotecas estándar, así como correcciones de seguridad implementadas a partir del código del núcleo de Python 3 y paquetes de terceros.

Junto con los beneficios de seguridad de pasar a Python 3, el NCSC ha producido una lista de características útiles que se encuentran en la última versión, que incluye la expresión "yield from", cadenas de texto "unicode", una función "print" más capaz y una forma más fácil de leer declaraciones "with" complejas.

Si quieres mantenerte informado sobre cuánto tiempo te queda, puedes consultar este reloj de cuenta atrás.

También te puede interesar:

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Software, allí encontraras muchos artículos similares a La migración de Python 2 a Python 3: Estás listo para el cambio , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.