Maison  >  Article  >  développement back-end  >  Comment mettre à jour une grande base de code Python 2 vers Python 3 ?

Comment mettre à jour une grande base de code Python 2 vers Python 3 ?

WBOY
WBOYavant
2023-09-04 17:09:081145parcourir

如何将一个大型的Python 2代码库更新到Python 3?

Présentation

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.

Comment mettre à jour vers Python3

  • Réécrire la base de code en Python 3

  • Utilisez le processus de transplantation

Méthode 1 : Réécrire toute la base de code

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.

Méthode 2 : Utiliser le processus de portage

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.exe

Cela 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 -

Fichier Setup.py mis à jour pour indiquer la compatibilité Python3

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.

Utilisez des scripts modernes ou futuristes

É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.

Utilisez la détection des fonctionnalités lors de l'importation pour garantir la compatibilité des versions

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 

Vérifiez lors de la comparaison des données binaires et textuelles

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.

A une bonne couverture de tests

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.

Conclusion

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer