2009-05-06 4 views

Répondre

18

De python.org:

The current production versions are Python 2.6.2 and Python 3.0.1.

, oui.

Python 3.x contient quelques changements en arrière incompatibles, alors python.org dit aussi:

start with Python 2.6 since more existing third party software is compatible with Python 2 than Python 3 right now

+3

+1: Citez la documentation. Un lien aurait été encore mieux. –

+1

@ S.Lott Changé! –

10

Ubuntu est passé à 2,6 dans c'est toute dernière version, et n'a pas eu de problèmes importants. Donc je dirais "oui, c'est stable".

6

Cela dépend des bibliothèques que vous utilisez. Par exemple, il n'y a pas de paquet InformixDB précompilé pour 2.6 si vous devez utiliser Python sous Windows.

Le framework web2py reste également en version 2.5 à cause d'un bug dans 2.6. Personnellement, j'utilise CPython 2.6 (workhorse) et 3.0 (experimental) et Jython 2.5 beta (pour mon test avec JDBC et ODBC).

4

Oui c'est bon, mais ce n'est pas la bonne question. La bonne question est "Puis-je utiliser Python 2.6, en prenant en considération les incompatibilités qu'il introduit?". Et la réponse courte est "très probablement oui, sauf si vous utilisez une lib spécifique qui ne fonctionnerait pas avec 2.6, ce qui est assez rare".

+1

quelles incompatibilités? – SilentGhost

+0

E.G: l'implémentation de os.popen2 et os.popen3 dans python 2.6 considère l'argument cmd comme une chaîne. La documentation - aide (os.popen3) - indique que l'argument cmd peut être une séquence sur Unix. Là pour c'est incompatible avec os.popen * en python 2.5 –

+0

Je pense que vous interprétez mal les docs. http://www.python.org/doc/2.5.4/lib/os-newstreams.html#l2h-2628 dit: "Aussi, pour chacune de ces variantes, sous Unix, cmd peut être une séquence, auquel cas les arguments seront passés directement au programme sans intervention du shell (comme avec os.spawnv()) .Si cmd est une chaîne, il sera passé au shell (comme avec os.system()). " – SilentGhost

1

J'ai trouvé 2,6 à être assez bonne à deux exceptions près:

  1. Si vous utilisez sur un serveur, je l'ai eu du mal dans le passé avec des bibliothèques qui sont utilisées par des éléments de le serveur (Debian Etch IIRC). Il est possible avec un peu de jokery pokery de maintenir plusieurs versions de python à l'unisson mais si vous êtes prudent :-)
  2. Ce n'est plus vrai, mais la dernière fois que j'ai essayé 2.6, wxPython n'avait pas été mis à jour ce qui voulait dire tous mes outils gui que j'ai écrits cassés. Il y a maintenant une version disponible qui est construite contre 2.6.

Donc, je vous suggère de vérifier tous les modules que vous utilisez et vérifier leur compatibilité avec 2.6 ...

1

J'ai récemment passé de python2.5 à 2,6 pour mon projet de recherche impliquant beaucoup de libs 3ème partie (scipy, pydot, etc.) et trucs liés à swig.

La seule chose que je devais changer était de convertir toutes les chaînes avec

s = unicode(s, "utf-8")

avant que je les ai nourris dans le module d'enregistrement.

Sinon, je suis arrivé à chaque fois que

Traceback (most recent call last):
File "/usr/lib/python2.6/logging/__init__.py", line 773, in emit
stream.write(fs % msg.encode("UTF-8"))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 31: ordinal not in range(128)

+0

J'ai aussi cette UnicodeDecodeError, pouvez-vous me dire comment convertir des chaînes avec "s = unicode (s," utf-8 ")"? – erical

Questions connexes