2009-08-28 10 views
2

My stuff est développé et en cours d'exécution sur Python 2.5.2passer à Python 2.6.x

Je veux passer un peu de code à 3.x, mais ce n'est pas possible parce que la plupart des paquets externes que j'utilise ne sont pas encore là. (Comme numpy par exemple). Donc, je vais faire l'étape intermédiaire et passer à 2.6.2.

Ma question: Si un module externe fonctionne sur 2.5.2, mais ne dit pas explicitement qu'il fonctionne avec 2.6.x, puis-je supposer que tout ira bien? Ou pas?

+3

Je suppose que vous pouvez essayer et voir? – SilentGhost

+0

Ça devrait aller. Je n'ai eu aucun problème sérieux quand je suis passé à 2.6. –

Répondre

8

Très probablement, ils fonctionneront très bien. Certaines choses peuvent provoquer des dépréciations, par exemple le module sha, mais elles peuvent être ignorées en toute sécurité. C'est mon intuition, bien sûr, vous pouvez frapper une chose spécifique causant des problèmes. Quoi qu'il en soit, un coup d'œil sur ceux-ci devraient dire assez rapidement si votre code a besoin de travail ou non:

+0

Juste testé 30.000 lignes de notre application sous 2.6. J'ai bien travaillé. Un petit problème dans la gestion des exceptions (l'attribut .message est obsolète) m'a attrapé. –

2

Vous ne pouvez pas supposer que. Cependant, vous devriez être en mesure de tester facilement si cela fonctionne ou non. De même, ne vous embêtez pas à essayer de passer à 3.x pour une autre année ou deux. 2.6 a déjà de nombreuses fonctionnalités de 3.0 déjà portées, donc la transition ne sera pas si mauvaise, une fois que vous l'aurez fait.

1

Il est probablement utile de lire la section What's New de la documentation 2.6. Alors que 2.6 est conçu pour être rétrocompatible, il y a quelques changements qui pourraient attraper le code, le code particulier qui fait quelque chose d'étrange (exemple: hasattr() utilisé pour avaler toutes les erreurs, maintenant il avale tout sauf SystemExit et KeyboardInterrupt, pas quelque chose que la plupart des gens remarquerait, mais il peut y avoir un code étrange où cela ferait une différence). De plus, ce code indique les modifications que vous pouvez faire pour faciliter le passage à 3.x lorsque vos paquets sont lus (comme la distinction entre str et bytes même s'ils sont synonymes dans 2.6).

3

Le problème principal viendra avec toutes les extensions C-codées que vous utilisez: selon votre système, mais surtout sur Windows, ces extensions, compilées pour 2.5, ne fonctionneront probablement pas du tout (ou du moins pas tranquillement et fiable) avec 2.6. Ce n'est pas particulièrement différent, par exemple, de migrer de 2,4 à 2,5 dans le passé.

La solution la plus simple (IMHO) consiste à obtenir les sources de ces extensions et à les réinstaller. Sur la plupart des plates-formes, et pour la plupart des extensions, python setup.py install (éventuellement avec un sudo ou connecté en tant qu'administrateur, selon votre installation) fonctionnera - vous devrez peut-être télécharger et installer les paquets «développeur» appropriés, encore une fois en fonction de quel système exactement utilisez et ce que vous avez déjà installé (par exemple, sur Mac OS X, vous devez installer XCode - ou au moins le sous-ensemble gcc, mais il est plus simple de tout installer - ce qui vous oblige à vous inscrire pour gratuit chez Apple Developer Connection et téléchargez le grand paquet XCode). Je ne suis pas sûr de la simplicité de cette approche sur Windows pour l'instant - si vous pouvez utiliser des compilateurs free-as-in-beer tels que mingw ou l'édition "express" de Microsoft de VS, ou avoir à débourser $$ à MS pour obtenir le bon compilateur. Cependant, la plupart des développeurs d'extensions tierces sortent en cours de route pour fournir des binaires Windows prêts, précisément parce que la recompilation des utilisateurs est (ou au moins utilisée) un problème sur Windows, et 2.6 est déjà largement supporté par des mainteneurs d'extensions tierces (car après tout, il s'agit juste d'une simple recompilation pour eux ;-), donc vous pouvez avoir de la chance et trouver tous les binaires précompilés dont vous avez besoin pour les extensions utilisation.

Questions connexes