2009-12-17 10 views
6

¿Qué versión de Python puede recomendar para un proyecto a largo plazo (años)? ¿Debería uno usar 2.6+ o 3.x ya es estable? (solo se requieren bibliotecas estándar)Python - ¿Se debería iniciar un nuevo proyecto directamente en Python 3.x?

ACTUALIZACIÓN: de acuerdo con las respuestas a continuación, Python 3.x todavía tiene errores críticos. Por favor, también vea Python's list of bugs.

+2

El problema, como siempre, es con las bibliotecas de terceros. – Skilldrick

+0

"Python 3.x todavía tiene errores críticos"? De los 32 marcados como "críticos", la mayoría parece ser "escamosa". Una fuga de memoria parece ser realmente "crítica". Creo que los "errores críticos" pueden ser una exageración. –

Respuesta

2

Creo que se reduce a la precisión con la que puede controlar el entorno en el que se ejecutará la aplicación. Si está produciendo una pieza de software en la que su cliente 'instalará' python para ejecutar su software, entonces también podría usar la última versión (Python 3.x). Si tiene como objetivo las instalaciones existentes de python, sería mejor elegir la compatibilidad 2.5 o 2.6, ya que estas son más comunes.

Python 3.x es estable. Ese no es el problema. El problema con esto es la compatibilidad. Si tiene la capacidad de utilizar lo último y lo mejor, entonces debe usar la nueva versión. Para nuevos proyectos, 3.x sería la elección obvia.

+0

¿Sabe usted que Python 3.x es cierto? multihilo? – psihodelia

+1

@psihodelia, si quiere decir, sin el GIL que impide que CPython aproveche completamente los procesadores multinúcleo sin recurrir al paquete de multiprocesamiento, la respuesta es no, Python 3 no solucionará ese problema AFAIK. –

+0

Significa que, incluso si en N años tendremos múltiples CPU, solo un hilo puede estar haciendo cosas a la vez. ¿Derecha? Tan malo ... – psihodelia

0

Si está comenzando su proyecto ahora, y todas las bibliotecas de terceros que desea usar ya están portadas a Python 3, y su sistema operativo objetivo (realmente quiero decir distribución de Linux) paquetes Python 3, entonces seguro.

Adelante, usar Python 3.

4

No hay nada malo con Python 3, pero muchas bibliotecas no han sido portados. Por ejemplo, desde PyGame FAQ:

Python 3 apoyo es incompleta y todavía en fase de desarrollo

Y a partir de NumPy:

soporte para Python 3 está previsto, pero aún no programados .

Todo depende de la importancia de las bibliotecas de terceros para usted, y si todavía están portados.

+1

@Skilldrick, la versión de Python 3.0 tenía algo mal, si mal no recuerdo, que fue un rendimiento abismal en E/S de archivos. Si eso fue cierto, ¿se ha corregido por completo en 3.1, o todavía hay algunos problemas de rendimiento bastante significativos en relación con Python 2.x? –

+0

De acuerdo con esto, tiene: http://bugs.python.org/issue4565 – Skilldrick

+1

http://docs.python.org/3.1/whatsnew/3.1.html#optimizations –

4

Lo bueno de Python3 es que there is a automatic way to port your programs de Python2. Pero el programa debe cumplir ciertos criterios.

Creo que el mejor enfoque por ahora es escribir el código Python2 y probarlo en el modo de prueba Python3 (ejecute python -3 program.py). De esta forma, ya no tendrá que preocuparse por las bibliotecas que faltan y podrá convertir su programa a Python3 en cuanto tenga sentido.

1

THC4k mentions 2to3, y solo quería señalar que también hay un 3to2 package. Nunca he usado ninguno de los paquetes, pero he oído que 3to2 es más indulgente que 2to3.

Editar: solo quería enfatizar lo que otros han sugerido: Si elige usar uno de estos convertidores para lanzar su software para 2.6 o 3.0, probablemente querrá tener un sistema de prueba sólido en su lugar (unittest, doctest, etc.) con una cobertura de prueba decente para dormir bien por la noche!

9

Esto es por qué debería utilizar Python 3.x:

Python 2.x: 3.x

>>>True = False 
>>>True 
False 

Python:

>>> True = False 
    File "<stdin>", line 1 
SyntaxError: assignment to keyword 

Fuente: Strangest language feature

prejuicio: Pero tantos paquetes no están listos todavía Python 3

Esta es (una) no es verdadero (source) y (b) no es importante para un principiante.

Cuestiones relacionadas