2012-01-02 10 views
6

Estoy en el proceso de aprender Python y tenía una pregunta sobre el futuro. Sé que no es lo más urgente de lo que pensar en este momento, pero tengo curiosidad.¿Cómo mantener cuando Django cambia a Python 3?

Actualmente, Django solo admite hasta Python 2.7. Sin embargo, en el futuro cercano, estará soportando Python 3. En términos de escribir código en Python 2.7 y usar el marco de Django relacionado, ¿qué sucede cuando realmente llega la transición a Python 3?

Presumiblemente, aprendería y codificaría en la versión más nueva. Sin embargo, ¿qué pasa con el mantenimiento del código anterior? ¿Se queda como está? ¿Necesita ser reescrito?

Tengo curiosidad por saber cómo funciona esta transición. Además, ¿hace una diferencia que Python 3 no sea compatible con versiones anteriores? ¿Cuál es la consecuencia de eso? Por ejemplo, leí que las versiones de Ruby 1.8 a 1.9 (e incluso el futuro 2.x) eran retrocompatibles y menos de un salto (que Python 2.xa 3.x). Me pregunto si esa división entre las versiones de Python crea problemas de fragmentación o problemas de mantenimiento del código.

Por lo tanto, si alguien pudiera tratar de explicarme qué ocurre con estas actualizaciones y los problemas que se presentan al tratarlas, realmente lo agradecería. ¡Gracias!

+0

hay una herramienta que convierte su código python 2.x en código 3.x ... –

+1

También tenga en cuenta que Django (como la mayoría de los proyectos importantes) no cambiará de una versión a la siguiente, pero tendrá algunas versiones compatibles con 2.x y 3.x. – delnan

Respuesta

3

... qué ocurre cuando se produce la transición a Python 3.

Nada. Es por eso que estás usando un marco en primer lugar. Todo lo que necesita para ser responsable es la pequeña cantidad de su código que will need to be ported.

2

Django (debido a la inmensa cantidad de código que se ejecuta en él), no dejará, al menos en un futuro próximo, soporte para 2.x. Simplemente no tiene ningún sentido.

Cualquier Python 3 tiene problemas para obtener la adopción en este momento; PyPy está recogiendo mucho, mucho más rápido.

Y, hay py2to3 que convierte algunas partes en python 2 en python 3, y luego tienes que hacer el resto a mano.

+1

Comparar Python 3 y PyPy no tiene ningún sentido. Son completamente ortogonales: PyPy es una implementación de Python (2.7, como ocurre) sobre un compilador JIT, no una nueva versión del lenguaje. –

+0

@DanielRoseman: En realidad, tiene sentido: si PyPy tuvo suficiente adopción, podría seguir evolucionando el 2. – Marcin

1

Su código anterior solo necesita ser reescrito si va a cambiar a Python 3 para ese código. Para proyectos a largo plazo, es probable que esto suceda, para muchos otros proyectos morirán y se volverán obsoletos, o el cliente cambiará a otra empresa para mantenerlo, y por lo tanto nunca tendrá que molestarse.

Para el código que necesita ejecutarse en Python 3, debe portarlo. Esto puede ser muy fácil o muy difícil, dependiendo de cuánto estés usando tanto datos Unicode como binarios, y cuántos de los componentes internos de Python confías.

Creo que el típico proyecto de Django sería bastante sencillo de transportar.

Para obtener más información sobre la transferencia, puede ver http://python3porting.com.

Cuestiones relacionadas