12 pythons pour chaque besoin de programmation

Lorsque vous choisissez Python pour le développement logiciel, vous choisissez un vaste écosystème de langage avec une multitude de packages couvrant toutes sortes de besoins de programmation. Mais en plus des bibliothèques pour tout, du développement de l'interface graphique à l'apprentissage automatique, vous pouvez également choisir parmi un certain nombre d'exécutables Python - et certains de ces environnements d'exécution peuvent être mieux adaptés au cas d'utilisation que vous avez sous la main.

Voici un bref tour d'horizon des distributions Python, de l'implémentation standard (CPython) aux versions optimisées pour la vitesse (PyPy), pour des cas d'utilisation particuliers (Anaconda, ActivePython), pour différents environnements d'exécution de langage (Jython, IronPython), et même pour la découpe- expérimentation de bord (PyCopy, MesaPy).

CPython

CPython est l'implémentation de référence de Python, la version standard vers laquelle se tournent toutes les autres incarnations Python. CPython est écrit en C, comme l'indique son nom, et il est produit par le même groupe central de personnes responsables de toutes les décisions de haut niveau concernant le langage Python.

Cas d'utilisation de CPython

Parce que CPython est l'implémentation de référence de Python, c'est la plus conservatrice en termes d'optimisations. C'est par conception. Les responsables de Python veulent que CPython soit l'implémentation la plus largement compatible et standardisée de Python disponible.

CPython est votre meilleur choix lorsque la compatibilité et la conformité aux normes Python comptent plus que les performances brutes et d'autres problèmes. CPython est également utile pour l'expert qui souhaite travailler avec Python dans son incarnation la plus fondamentale et qui est prêt à renoncer à certaines commodités. 

Par exemple, avec CPython, vous devez faire un peu plus de travail pour configurer des environnements virtuels. D'autres distributions (Anaconda, en particulier) fournissent plus d'automatisation autour de la configuration de l'espace de travail.

Limitations de CPython

CPython n'a pas les optimisations de performances trouvées dans les autres éditions de Python. Il n'y a pas de compilateur JIT natif (juste à temps), pas de bibliothèques mathématiques accélérées et pas d'ajouts tiers pour des raisons de performances. Ce sont toutes des choses que vous pouvez ajouter vous-même, mais elles ne sont pas regroupées. Encore une fois, tout cela est par conception, pour assurer une compatibilité maximale et pour permettre à CPython de servir d'implémentation de référence, mais cela signifie que toute optimisation des performances est du ressort du développeur.

De plus, CPython ne fournit qu'un ensemble d'outils de base pour travailler avec Python. Le gestionnaire de packages pip, par exemple, obtient et installe des packages à partir du référentiel de packages PyPI natif de Python. Pip installera même des binaires précompilés (via le format de distribution de roue) s'ils sont fournis par le développeur, mais il n'installera aucune dépendance que les packages pourraient avoir en dehors de PyPI. 

Vidéo connexe: Comment Python facilite la programmation

Parfait pour l'informatique, Python simplifie de nombreux types de travail, de l'automatisation du système au travail dans des domaines de pointe comme l'apprentissage automatique.

Anaconda Python

Anaconda, produit par Anaconda, Inc. (anciennement Continuum Analytics), est conçu pour les développeurs Python qui ont besoin d'une distribution soutenue par un fournisseur commercial et avec des plans de support pour les entreprises. Les principaux cas d'utilisation d'Anaconda Python sont les mathématiques, les statistiques, l'ingénierie, l'analyse de données, l'apprentissage automatique et les applications associées.

Cas d'utilisation d'Anaconda Python

Anaconda regroupe plusieurs des bibliothèques les plus courantes utilisées dans le travail commercial et scientifique de Python - SciPy, NumPy, Numba, etc. - et en rend beaucoup plus accessibles via un système de gestion de paquets personnalisé.

Anaconda se distingue des autres distributions par la façon dont il intègre toutes ces pièces. Une fois installé, Anaconda fournit une application de bureau - l'Anaconda Navigator - qui rend chaque aspect de l'environnement Anaconda disponible via une interface graphique pratique. Trouver des composants, les maintenir à jour et travailler avec eux est beaucoup plus facile avec Anaconda qu'avec CPython.

Un autre avantage est la façon dont Anaconda gère les composants extérieurs à l'écosystème Python s'ils sont nécessaires pour un package spécifique. Le condagestionnaire de packages, créé spécifiquement pour Anaconda, gère l'installation des packages Python et des exigences logicielles externes tierces.

Limitations d'Anaconda Python

Étant donné qu'Anaconda comprend de nombreuses bibliothèques utiles et peut en installer encore plus avec seulement quelques touches, la taille d'une installation Anaconda peut être beaucoup plus grande que CPython. Une installation CPython de base exécute environ 100 Mo; Les installations Anaconda peuvent atteindre des gigaoctets. Cela peut être un problème dans les situations où vous avez des contraintes de ressources.

Une façon de réduire l'empreinte d'Anaconda est d'installer Miniconda, une version allégée d'Anaconda qui ne comprend que le minimum absolu de pièces nécessaires pour être opérationnel. Vous pouvez ensuite ajouter des packages à Miniconda comme bon vous semble, en gardant un œil sur la quantité d'espace consommée par chaque pièce.

ActivePython

Comme Anaconda, ActivePython est créé et maintenu par une société à but lucratif - dans ce cas, ActiveState, qui commercialise un certain nombre de langages d'exécution avec l'IDE multilingue Komodo.

Cas d'utilisation d'ActivePython

ActivePython est destiné aux utilisateurs d'entreprise et aux scientifiques des données - les personnes qui souhaitent utiliser Python, mais qui ne souhaitent pas consacrer beaucoup d'efforts à l'assemblage et à la gestion d'une installation Python. ActivePython utilise le pipgestionnaire de packages standard de Python , mais fournit également quelques centaines de bibliothèques communes sous forme de packs vérifiés, ainsi que certaines bibliothèques courantes avec des dépendances tierces telles que la bibliothèque Intel Math Kernel.

Limitations d'ActivePython

Il y a un inconvénient potentiel à l'approche d'ActivePython pour gérer les packages avec des dépendances externes. Si vous souhaitez mettre à niveau vers une version plus récente d'un projet avec des dépendances complexes (par exemple, TensorFlow), vous devrez également mettre à niveau votre installation ActivePython. Dans les environnements où le développement a tendance à être lié à une version spécifique d'un projet, c'est moins un problème. Mais dans les environnements où le développement a tendance à suivre les versions de pointe, cela peut poser un problème.

PyPy

En remplacement de l'interpréteur CPython, PyPy utilise la compilation juste-à-temps (JIT) pour accélérer l'exécution des programmes Python. En fonction de la tâche exécutée, les gains de performances peuvent être spectaculaires. 

Cas d'utilisation de PyPy

Une plainte courante concernant Python en général, et CPython en particulier, est la vitesse. Par défaut, Python s'exécute plusieurs fois plus lentement que C, parfois des centaines de fois plus lentement. PyPy JIT compile le code Python en langage machine, offrant une accélération de 7,7x par rapport à CPython en moyenne. Certaines tâches s'exécutent jusqu'à 50 fois plus vite. 

La meilleure partie est que peu ou pas d'effort est requis de la part du développeur pour débloquer ces gains. Remplacez CPython par PyPy et, pour la plupart, vous avez terminé.

Limitations de PyPy

PyPy a toujours fonctionné au mieux avec les applications Python «pures». Les packages Python qui s'interfacent avec les bibliothèques C, telles que NumPy, ne se sont pas aussi bien comportés en raison de la manière dont PyPy a émulé les interfaces binaires natives de CPython. Au fil du temps, cependant, les développeurs de PyPy ont réduit ce problème et ont rendu PyPy beaucoup plus compatible avec la majorité des packages Python qui dépendent des extensions C. En bref, la prise en charge des extensions C est encore limitée, mais beaucoup moins qu'elle ne l'était auparavant.

Un autre inconvénient possible avec PyPy est la taille du runtime. Le runtime CPython principal sur Windows, à l'exclusion de la bibliothèque standard, est d'environ 4 Mo, tandis que le runtime PyPy est d'environ 32 Mo. Notez également que PyPy a longtemps mis l'accent sur la branche 2.x de Python, ainsi, par exemple, PyPy pour Python 3.x n'est actuellement disponible pour Windows qu'en version bêta-test 32 bits. (PyPy est disponible en versions 64 bits pour Python 2.x et 3.x pour Linux et MacOS.)

Jython

La JVM (Java Virtual Machine) sert de runtime pour un grand nombre de langages en plus de Java. La longue liste comprend Groovy, Scala, Clojure, Kotlin et, oui, Python, via le projet Jython.

Cas d'utilisation de Jython

Jython compile le code Python 2.x en bytecode JVM et exécute le programme résultant sur la JVM. Dans certains cas, un programme compilé en Jython s'exécutera plus rapidement que son homologue CPython, mais pas toujours.

Le plus grand avantage de Jython est l'interopérabilité directe avec le reste de l'écosystème Java. Java est encore plus utilisé que Python. L'exécution de Python sur la JVM permet aux développeurs Python de puiser dans un énorme écosystème de bibliothèques et de frameworks qu'ils ne pourraient autrement pas utiliser. De la même manière, Jython permet aux développeurs Java d'utiliser les bibliothèques Python. 

Limitations de Jython

Le plus gros inconvénient de Jython est qu'il ne prend en charge que la branche 2.x de Python. La prise en charge de Python 3.x est en cours de développement, mais depuis un certain temps. Jusqu'à présent, rien n'a été publié.

Notez également que si Jython apporte Python à la JVM, il n'apporte pas Python à Android. Comme il n'y a actuellement aucun portage de Jython vers Android proprement dit, Jython ne peut pas être utilisé pour développer des applications Android.

IronPython

Tout comme Jython est une implémentation de Python sur la JVM, IronPython est une implémentation de Python sur le runtime .Net, ou CLR (Common Language Runtime). IronPython utilise le DLR (Dynamic Language Runtime) du CLR pour permettre aux programmes Python de s'exécuter avec le même degré de dynamisme que dans CPython.

Cas d'utilisation d'IronPython

Comme Jython, IronPython est un pont. Le principal cas d'utilisation est l'interopérabilité entre Python et l'univers .Net. Les assemblys .Net existants peuvent être chargés dans les programmes IronPython à l'aide de la syntaxe native d'importation et de manipulation d'objets de Python. Il est également possible de compiler du code IronPython dans un assembly et de l'exécuter tel quel ou de l'appeler à partir d'autres langages. Cependant, notez que le MSIL (Microsoft Intermediate Language) dans l'assembly ne peut pas être directement accessible à partir d'autres langages .Net, car il n'est pas conforme à la spécification de langage commun.

Limitations d'IronPython

Comme Jython, IronPython ne prend actuellement en charge que Python 2.x. Cependant, des travaux sont en cours pour créer une implémentation IronPython 3.x.

WinPython

Comme son nom l'indique, WinPython est une distribution Python créée spécifiquement pour les utilisateurs de Microsoft Windows. Les éditions précédentes de CPython pour Windows n'étaient pas bien conçues et il était difficile pour les utilisateurs de Windows de tirer pleinement parti de l'écosystème Python. L'édition Windows de CPython s'est améliorée au fil du temps, mais WinPython offre encore beaucoup de choses que l'on ne trouve pas dans CPython.

Cas d'utilisation de WinPython

L'attraction principale de WinPython est qu'il s'agit d'une édition autonome de Python. Il n'a pas besoin d'être installé sur la machine sur laquelle il s'exécute; il a juste besoin d'être décompressé dans un répertoire. Cela rend WinPython utile dans les cas où le logiciel ne peut pas être installé sur un système donné, dans les scénarios où un runtime Python préconfiguré doit être distribué avec les applications pour s'exécuter dessus, ou lorsque plusieurs éditions de Python doivent s'exécuter côte à côte sans interférer les uns avec les autres.

WinPython regroupe également un grand nombre de packages orientés science des données - NumPy, Pandas, SciPy, Matplotlib, etc. - afin qu'ils puissent être utilisés immédiatement, sans étapes d'installation supplémentaires. Un compilateur C / C ++ est également inclus, car de nombreuses machines Windows n'en ont pas, et de nombreuses extensions Python en ont besoin ou peuvent l'utiliser.

Limitations de WinPython

Une limitation de WinPython est qu'il peut en inclure trop par défaut pour certains cas d'utilisation. Pour remédier à cela, les créateurs de WinPython fournissent une version «zéro» de chaque édition de WinPython, contenant uniquement l'installation la plus minimale possible du produit. D'autres packages peuvent être ajoutés plus tard, soit avec le propre pipoutil de Python, soit avec l'utilitaire WPPM de WinPython.

Python portable

Python Portable est le runtime CPython dans un package autonome. Il provient de la collection PortableDevApps d'applications similaires autonomes.

Cas d'utilisation de Python Portable

Comme WinPython, Python Portable comprend une multitude de packages pour le calcul scientifique: Matplotlib, Numba, SymPy, SciPy, Cython et autres. Tout comme WinPython, Python Portable s'exécute sans avoir besoin d'être officiellement installé sur l'hôte Windows; il peut vivre dans n'importe quel répertoire ou sur un lecteur amovible. L'IDE Spyder et le gestionnaire de packages pip de Python sont également inclus, vous pouvez donc ajouter, modifier ou supprimer des packages si nécessaire.

Limitations de Python Portable

Contrairement à WinPython, Python Portable n'inclut pas de compilateur C / C ++. Vous devrez fournir un compilateur C pour utiliser du code écrit avec Cython (et donc compilé en C).

Distributions Python expérimentales

Ces distributions apportent des modifications importantes à Python, soit parce qu'elles utilisent Python comme point de départ pour quelque chose d'entièrement nouveau, soit parce qu'elles apportent des changements stratégiques à Python standard. Dans l'ensemble, ces pythons ne sont pas encore recommandés pour une utilisation en production. 

Si vous vivez avec une base de code Python 2.x dans un avenir prévisible, vous voudrez peut-être consulter notre article sur les distributions Python expérimentales qui maintiennent Python 2.x en vie.

MicroPython

MicroPython fournit un sous-ensemble minimal du langage Python qui peut s'exécuter sur du matériel extrêmement bas de gamme tel que des microcontrôleurs. MicroPython implémente Python 3.4 avec quelques différences. Il est facile d'écrire du code MicroPython si vous connaissez Python, mais le code existant peut ne pas s'exécuter tel quel.

Pycopie