Facebook EmaiInACirclel
Développement front-end, back-end

Mise à niveau des versions Python – Migrer facilement vers Python 3

Gleb Tocarenco

Senior Python Developer

Avez-vous récemment envisagé de migrer vers Python 3 ? En tant que développeur ou coordinateur de projets IT, vous avez toutes les raisons du monde de vous interroger sur un passage de Python 2 à 3. Le débat qui porte sur les différentes versions Python à utiliser dans les projets informatiques est vraiment d’actualité, et suscite l’intérêt de toutes les personnes travaillant dans ce domaine.

Avant de nous pencher sur la question, deux choses sont à savoir.

  1. Ces dernières années, Python est devenu un langage de programmation extrêmement populaire en raison de sa simplicité, de sa syntaxe très lisible et du niveau élevé de support de la communauté.

  2. Pour vous donner un ordre d’idée, les Américains ont recherché « Python » sur Google plus souvent que « Kim Kardashian ». Si si.

 

Python – « Le langage de programmation ayant la croissance la plus rapide »

Python a su occuper différentes niches dans les sciences informatiques (un domaine fortement axé sur les données), comme la Data Science, le machine learning, l’IoT et le développement web. De nombreux développeurs choisissent Python comme leur premier environnement d’apprentissage de la programmation, et selon l’enquête Stackoverflow Developer Survey 2018, ce langage compte parmi les plus appréciés et les plus prisés. Cette année, Python a même surpassé C#, après avoir réservé le même sort à PHP l’année dernière. C’est la raison pour laquelle Python jouit d’une telle notoriété, et qu’il est le langage de programmation majeur ayant la croissance la plus rapide.

L’extraordinaire popularité de Python ces dernières années s’explique aussi par une autre raison : sa grande polyvalence (projets d’entreprise et d’excellence). Par exemple, il peut servir à développer des applications Raspberry Pi, des scripts de programmes de type desktop, et configurer des serveurs – mais il ne se limite pas à ces types de tâches !

Des projets Python ? Nous en avons à revendre ! Pentalog utilise cette technologie pour développer différents types de projets, parmi lesquels une plateforme d’e-commerce et une appli d’e-learning.

Versions Python - évolution du langage

Python s’impose donc de plus en plus pour le développement des projets IT, ce qui incite les développeurs à envisager une migration vers des versions plus récentes, comme Python 3.

Python 2 et 3, les deux têtes de l’HYDRA

L’année 2020 marquera la date de fin de vie officielle de Python 2. Il vous reste donc de moins de deux ans pour profiter du support de la communauté. Après cela, il vous faudra trouver d’autres moyens d’obtenir du support pour Python 2, car de nouvelles vulnérabilités peuvent toujours survenir.

Python 3 a été publié par son créateur Guido van Rossum en 2008. Dix ans plus tard, Python 3 est indubitablement devenu un excellent langage de programmation interprété proposant d’incroyables fonctionnalités, comme la nouvelle syntaxe de la communauté, le support Unicode, le support asyncio, les annotations de type, les extensions de bibliothèques standard, et une meilleure gestion des erreurs.

Python 3.7.0 est la publication majeure la plus récente de Python en 2018 ; elle contient plusieurs nouvelles fonctionnalités et optimisations. Découvrez-les, vous ne serez pas déçu !

Petit rappel : Python 3 n’est pas rétrocompatible.

 

Versions de Python – Que dire de Python 3 ?

En me basant sur mon expérience, je dirais qu’il existe plusieurs approches permettant d’ajouter Python 3 comme codebase pour votre projet :

  • Extrême : réécrire entièrement le projet en Python 3

  • Soudain : cesser de développer de nouvelles fonctionnalités et commencer le portage vers Python 3

  • Progressif : ajouter progressivement le support pour Python 3, et abandonner le support pour Python 2

Toutes ces possibilités présentent des avantages et des inconvénients. Si vous disposez d’un petit codebase, vous pouvez facilement réécrire tout le projet en partant de zéro. Si vous n’êtes soumis à aucune contrainte de délais et que vos clients n’ont pas besoin de nouvelles fonctionnalités pour le moment, vous pouvez concentrer l’intégralité de votre cycle de développement sur le portage vers Python 3.

Les deux premières approches sont difficiles à implémenter pour les projets qui ne peuvent se permettre d’interrompre le cycle de développement. C’est pourquoi il existe la troisième option.

L’approche pratique d’une mise à niveau progressive vers la troisième version de Python repose sur les étapes suivantes, qui garantiront une transition parfaite :

  1. Disposer d’une bonne couverture de tests

  2. Abandonner le support des anciennes versions de Python 2 (passer à Python 2.7)

  3. Écrire du code supporté par les deux versions

  4. Utiliser vos tests pour faire en sorte que le code fonctionne à nouveau

  5. Supprimer l’utilisation des bibliothèques et de la syntaxe obsolètes

  6. Commencer à utiliser Python 3 en production

  7. Supprimer le code de compatibilité de Python 2

La partie la plus difficile cette transition consiste sans doute à écrire du code qui fonctionne avec les deux versions de Python. Mais n’ayez crainte ! Le processus de migration vers Python 3 peut être semi-automatisé. La communauté Python propose différents outils que nous examinerons plus en détail, et qui faciliteront la transition.

 

Comment mettre à jour les versions de Python ?

1. Envisagez d’utiliser les couches de compatibilité

Une approche naïve pour continuer de faire fonctionner les deux versions serait d’essayer d’utiliser d’abord les bibliothèques de Python 3 dans une déclaration try/catch.

try:
from
urllib.request import urlopen
except ImportError:
from urllib2 import urlopen

r = urlopen(‘https://www.google.com‘)

Cependant, il existe une meilleure approche pour échapper au laborieux système du try/catch. Certaines bibliothèques, comme six et future, fournissent une manière élégante d’ajouter des couches de compatibilité pour votre codebase. Le code ci-dessous montre un exemple bien ficelé d’utilisation de la bibliothèque future.

from future.standard_library import install_aliases
install_aliases()
from
urllib.request import urlopen
r = urlopen(‘https://www.google.com‘)

La bibliothèque future offre une excellente manière d’écrire le code de couche de compatibilité. Sa méthode très astucieuse, appelée install_aliases, vous permet de continuer d’utiliser Python 2 mais en utilisant la version Python 3. De plus, lorsque vous avez terminé la transition, il vous suffit de supprimer l’importation de la future bibliothèque, et le tour est joué.

2. Envisagez d’utiliser les outils automatisés

L’exemple d’utilisation des coûts de compatibilité ci-dessus représente une solution bien pratique pour écrire du code compatible avec les deux versions de Python. Cependant, la communauté Python a encore mieux à offrir : des bibliothèques, telles que modernize et futurize, fournissent des outils de ligne de commande automatisés pour convertir le code.

Ces bibliothèques peuvent convertir facilement des fichiers avec le code source Python 2 pour les rendre compatibles avec Python 3. Mais en principe, il vaut mieux vérifier ces fichiers convertis, car même les machines peuvent avoir des bugs. Une approche plus judicieuse permettant d’utiliser les outils de conversion automatisée consiste à utiliser vos tests et à réécrire le code en cas d’erreur.

3. Envisagez d’utiliser les transitions de packages

Lorsque vous migrez vers Python 3, vous serez également confronté à la question des bibliothèques et des packages tiers. Bonne nouvelle ! Différents outils, tels que caniusepython3, vous permettent de vérifier si un package en particulier est compatible ou non avec Python 3. Le package caniusepython3 fournit une fonctionnalité de ligne de commande vous permettant de vérifier vos fichiers requirement.txt. caniusepython3 dispose également d’une interface web pour vérifier vos dépendances.

 

Lancez-vous !

Migrer ou ne pas migrer… telle est la question qui agite de nombreux développeurs. Le processus de mise à niveau peut être laborieux, et il demande du temps et de l’argent. Cependant, le compte à rebours Python 2 a commencé – “the clock is ticking”. Il est difficile de prévoir ce qu’il se passera pour les projets qui choisissent de ne pas adopter Python 3, mais il est évident qu’ils seront plus difficiles à développer, à maintenir et à supporter. Travailler avec une version ancienne de Python peut sonner le glas de vos projets.

J’espère que les conseils précédents vous auront aidé à comprendre qu’au bout du compte, Python 3 aura sans doute le dernier mot. ActivePython3 étant énormément téléchargé, le passage à l’utilisation de Python 3 est plus qu’une évidence à la fois pour les développeurs et les entreprises qui utilisent ces technologies pour leurs projets.

 


Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.