Choisir un interpréteur

L’état de Python (2 vs 3)

Quand vous choisissez un interpréteur Python, une question imminente est toujours présente: “Dois-je choisir Python 2 ou Python 3”? La réponse n’est pas toujours aussi évidente que l’on pourrait penser.

L’essentiel à retenir de l’état des choses est comme suivant:

  1. Python 2.7 a été le standard depuis un temps assez long.

  2. Python 3 a introduit des changements majeurs dans le langage, avec lesquels de nombreux développeurs ne sont pas contents.

  3. Python 2.7 recevra des mises à jour de sécurité nécessaires jusqu’en 2020 [5].

  4. Python 3 évolue constamment, comme Python 2 l’a fait dans le passé.

Ainsi, vous pouvez maintenant voir pourquoi ce n’est pas une décision aussi facile.

Recommandations

Je vais être franc:

Utilisez Python 3 si...

  • Vous vous en moquez.

  • Vous adorez Python 3.

  • Vous êtes indifférent vis à vis de 2 vs 3.

  • Vous ne savez pas lequel utiliser.

  • Vous embrassez le changement.

Utilisez Python 2 si...

  • Vous adorez Python 2 et êtes attristé par le fait que le futur soit Python 3.

  • Les prérequis de stabilité de votre logiciel seraient améliorés par un langage et un moteur d’exécution qui ne change jamais.

  • Un logiciel dont vous dépendez le nécessite.

Ainsi... 3?

Si vous choisissez un interpréteur Python à utiliser, et que vous n’avez pas d’opinions arrêtées, alors je vous recommande d’utiliser la dernière version de Python 3.x, comme chaque version apporte des modules de la bibliothèque standard nouveaux et améliorés, des corrections de bug et de sécurité. Le progrès est le progrès.

Avec ces éléments, utilisez seulement Python 2 si vous avez une raison importante pour cela, comme une bibliothèque exclusive à Python 2 qui n’a pas d’alternative adéquate disponible en Python 3 , ou vous (comme moi) adorez absolument et êtes inspirés par Python 2.

Consultez Can I Use Python 3? pour voir si un logiciel dont vous dépendez peut bloquer votre adoption de Python 3.

Plus de lecture (en)

Il est possible d’écrire du code qui fonctionne sur Python 2.6, 2.7, et sur Python 3. Cela varie de problèmes triviaux à difficile selon le genre de logiciel que vous écrivez; si vous êtes un débutant, il y a des choses beaucoup plus importantes à vous soucier.

Implémentations

Quand les gens parlent de Python, ils veulent souvent dire pas seulement le langage mais aussi l’implémentation Cython. Python est actuellement une spécification pour un langage qui qui peut être implémentée de multiples façons.

CPython

CPython est l’implémentation de référence de Python, écrite en C. Il compile le code Python en un bytecode intermédiaire qui est ensuite interprété par une machine virtuelle. CPython fournit le plus important niveau de compatibilité avec les paquets Python et les modules avec extension en C.

Si vous écrivez du code Python open-source et que vous voulez toucher une audience la plus large possible, le ciblage de CPython est le meilleur à faire. Pour utiliser des paquets qui s’appuient sur des extensions C pour fonctionner, CPython est votre seule option de mise en œuvre.

Toutes les versions du langage Python sont implémentées en C parce que CPython est l’implémentation de référence.

PyPy

PyPy est un interpréteur Python implémenté dans un sous-ensemble restreint statiquement typé du langage Python appelé RPython. L’interpréteur se comporte comme un compilateur “just-in-time” (JIT) et supporte de multiples back-ends (C, CLI, JVM).

PyPy a pour but une compatibilité maximum avec l’implémentation de référence CPython tout en améliorant les performances.

Si vous cherchez à améliorer les performances de votre code Python, cela vaut la peine d’essayer PyPy. Sur une suite de benchmarks, il est actuellement plus de 5 fois plus rapide que CPython.

PyPy supporte Python 2.7. PyPy3 [1], sorti en bêta, cible Python 3.

Jython

Jython est une implémentation Python qui compile du code Python en bytecode Java qui est ensuite exécuté par la JVM (Java Virtual Machine). De plus, il est capable d’importer et d’utiliser n’importe quelle classe Java comme un module Python.

Si vous avez besoin de vous interfacer avec une base de code Java existante ou avez d’autres raisons d’écrire du code Python pour la JVM, Jython est le meilleur choix.

Jython supporte actuellement jusqu’à la version Python 2.7. [2]

IronPython

IronPython est une implémentation de Python pour le framework .NET. Il peut utiliser à la fois les bibliothèques des frameworks Python et .NET, et peut aussi exposer du code Python vers d’autres langages dans le framework .NET.

Python Tools for Visual Studio intègre IronPython directement dans l’environnement de développement de Visual Studio, ce qui le rend choix idéal pour les développeurs Windows.

IronPython supporte Python 2.7. [3]

PythonNet

Python for .NET est un paquet qui fournit une intégration presque transparente d’une installation native de Python avec le Common Language Runtime (CLR) de .NET . C’est un approche inverse que celle qui est prise par IronPython (voir ci-dessus), qui est plus complémentaire que concurrente de cette dernière.

En association avec Mono, PythonNet permet des installations natives de Python sur des systèmes d’exploitation non-Windows, comme OS X et Linux, pour fonctionner dans le framework .NET. Il peut être exécuté en plus d’IronPython sans conflit.

PythonNet supporte de Python 2.3 jusqu’à Python 2.7. [4]

[1]http://pypy.org/compat.html
[2]https://hg.python.org/jython/file/412a8f9445f7/NEWS
[3]http://ironpython.codeplex.com/releases/view/81726
[4]http://pythonnet.github.io/readme.html
[5]https://www.python.org/dev/peps/pep-0373/#id2