Maison > Article > développement back-end > Comment mettre à jour une grande base de code Python 2 vers Python 3 ?
Python a démarré à l'origine sous la version 2 de Python, également connue sous le nom de "Legacy Edition". La dernière version de Python2 était Python2.7, qui a été abandonnée en 2020. Python 3.x a été introduit en remplacement avec de nombreuses améliorations et corrections de bugs par rapport à la version Python 2.x. Les anciennes versions héritées de Python sont des logiciels LTS, ce qui signifie qu'ils bénéficient d'un support à long terme. Cependant, les versions Python 3.x sont des versions rétrocompatibles, ce qui rend nécessaire la mise à niveau de votre base de code Python 2 vers Python 3 pour profiter pleinement de la facilité d'utilisation et de la prise en charge de Python 3. Les principales raisons pour lesquelles les développeurs passent à Python 3 peuvent être citées comme a) la productivité des développeurs (puisqu'il est typé dynamiquement, il est très facile à apprendre et à coder) et b) l'amélioration des performances, y compris des performances plus rapides sur la plupart des tâches.
Réécrire la base de code en Python 3
Utilisez le processus de transplantation
Cette méthode de mise à niveau de votre base de code n'est utile que lors de la création de logiciels à petite échelle. En effet, toute personne mettant à niveau une base de code doit avoir une compréhension générale du fonctionnement de l’ensemble de la base de code. La réécriture de votre code dans Python 3 peut vous aider à réaliser la puissance et la facilité d'utilisation de Python 3, rendant votre code plus court et plus efficace. De plus, si vous utilisez d'autres méthodes pour migrer votre base de code, des problèmes peuvent survenir lors de la mise en œuvre des fonctionnalités de Python 3.x jusqu'à ce que vous ayez migré l'intégralité de la base de code. La réécriture de la base de code a résolu ce problème et nous a également donné la possibilité de mettre à niveau tous les blocs de code que nous souhaitions créer depuis longtemps.
Cependant, cette méthode ne fonctionne que si la base de code a une petite taille évolutive.
D'un autre côté, nous pouvons utiliser le processus de portage Python officiellement décrit dans la documentation. À un niveau élevé, cette greffe est un processus en trois étapes -
Conversion automatique
Modifications manuelles
Vérification de l'exécution et correctifs
Cependant, la condition préalable pour tout cela est d'installer d'abord Python 3 et ses packages et bibliothèques associés. Regardons le processus Windows.
Télécharger et installer -
https://www.python.org/ftp/python/3.7.4/python-3.7.4.exeCela installera le logiciel Python. Après cela, vous pouvez démarrer le processus de portage en utilisant les modules ou logiciels de portage officiels Python 2 vers Python 3 (tels que 2to3, etc.). Cela portera le code sur Python 3, mais vous devez être conscient des problèmes suivants -
Le classificateur dans le fichier d'installation doit être mis à jour pour inclure le langage de programmation :: Python :: 3. Cela permettra uniquement à Python 3 ou à une de ses versions d'être présent dans l'environnement de codage (des classificateurs spécifiques à la version sont également disponibles), évitant ainsi un retour en arrière inutile dans le code Python 2. Cela aidera grandement à maintenir l'intégrité du code et permettra à l'intégralité de la base de code d'exister uniquement dans Python 3.
Étant donné que Python 3 n'est pas rétrocompatible, tous les scripts de la base de code doivent être mis à niveau vers le standard Python 3. Ici, nous pouvons utiliser un script comme Modernize ou Futurize au début de chaque module qui doit être mis à niveau. Toutes les fonctionnalités de Python ne seront pas utilisées dans les modules, mais certaines fonctionnalités de base doivent être modernisées pour garantir le bon fonctionnement de n'importe quel module. Par conséquent, par mesure de sécurité, la documentation officielle de Python recommande d'ajouter le code suivant -
from __future__ import absolute_import from __future__ import division from __future__ import print_function
Cela garantit que notre code actuel ne se dégradera pas et ne cessera pas de fonctionner sous Python 3 en raison de certaines dépendances de base. Cependant, une meilleure approche consiste à utiliser le projet Pylink, où l'indicateur --py3k permet d'indiquer quand notre code s'écarte de la compatibilité Python 3. Cela empêche d'exécuter des scripts Modernize ou Futurize individuellement au début de chaque bloc, ce qui entraîne un code plus court et moins d'erreurs, bien qu'il soit important de noter que Pylint ne prend en charge que Python 3.4 ou supérieur.
Dans certains cas, la base de code Python 2 peut contenir des modules qui ne fonctionnent pas dans Python 3. En utilisant la détection de fonctionnalités, nous pouvons savoir si les projets précédents prennent en charge les versions Python 3. Utiliser la détection de fonctionnalités au lieu de la détection de version pour vérifier la version correcte que nous devons utiliser est une approche plus sûre et évitera davantage de problèmes à l'avenir.
try: from importlib import abc except ImportError: from importlib2 import abc
Dans Python 3, les types de données texte et binaires ne peuvent pas être mélangés de manière flagrante car cela entraînerait des erreurs. Mais cette vérification ne peut pas être effectuée automatiquement à l'aide d'une autre bibliothèque Python, il est donc préférable d'exécuter un bloc de code personnalisé pour comparer les données basées sur des chaînes et des données binaires, la raison en est que Python 3 octets se comporte différemment comme l'ancien str dans les anciennes versions de Python Idem.
Il est important d'avoir une bonne couverture de test pour éviter les bugs et réduire le temps nécessaire à la mise à niveau de votre code en le modifiant uniquement lorsque cela est nécessaire. Des outils comme Coverage.py peuvent être d'une grande aide dans cette situation, trouvant l'emplacement exact de l'erreur en trouvant la différence entre ce qui a été exécuté et l'erreur.
Ici, nous avons examiné quelques façons de migrer une grande base de code logiciel de Python 2 vers Python 3, ainsi que certaines limitations dont nous devons être conscients et certaines méthodes utiles que nous pouvons utiliser. Cependant, le processus peut varier dans une certaine mesure en fonction de la base de code considérée et des bibliothèques et modules utilisés dans le projet. Ces étapes générales peuvent réellement convertir la plupart des bases de code en Python 3 et moderniser le code Python de manière globalement satisfaisante.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!