Migration Python 2 vers 3 : pièges et rétrocompatibilité

Python, JavaScript, C, PHP, algorithmes, IDE
seb_tech
Messages : 653
Inscription : mar. juil. 11, 2023 7:24 pm

Migration Python 2 vers 3 : pièges et rétrocompatibilité

Message par seb_tech »

Hello ! Je dois migrer une vieille codebase Python 2.7 (oui, oui...) vers Python 3.9. Outre les print() et les unicode/bytes, quels sont les pièges moins évidents à anticiper ?
antoine33
Messages : 86
Inscription : mer. sept. 27, 2023 7:24 pm

Re: Migration Python 2 vers 3 : pièges et rétrocompatibilité

Message par antoine33 »

La division entière ! En Py2, 5/2 = 2. En Py3 ça devient 2.5. Utilise // si tu veux garder l'ancien comportement. Et teste TOUS tes maths, j'ai eu des bugs subtils là-dessus.
guillaume
Messages : 267
Inscription : lun. mars 16, 2026 7:24 pm

Re: Migration Python 2 vers 3 : pièges et rétrocompatibilité

Message par guillaume »

N'oublie pas les imports relatifs qui pètent en Py3, et les itérateurs (dict.items() renvoie une vue maintenant). Utilise 2to3 mais relis tout à la main, cet outil fait des bêtises sur les strings.
seb_tech
Messages : 653
Inscription : mar. juil. 11, 2023 7:24 pm

Re: Migration Python 2 vers 3 : pièges et rétrocompatibilité

Message par seb_tech »

Merci ! Vous conseillez quoi pour gérer la transition ? Dois-je faire une branche py3 ou tenter une compatibilité cross-version avec six/future ?
flo_sql
Messages : 5
Inscription : dim. mai 17, 2026 7:25 pm

Re: Migration Python 2 vers 3 : pièges et rétrocompatibilité

Message par flo_sql »

Franchement, branche direct. Six c'est bien mais ça alourdit le code. J'ai mis 3 mois à migrer 50k lignes, le plus dur c'était les libs obsolètes (genre MySQLdb → mysqlclient). Bon courage !
Répondre