Pen^2 (./6185) :
À quel moment on est sûr qu'un code python2 est bien porté en python3 ?
C'est quand même pas une validation au runtime, si ? 
Si, si ^^ (et il n'y a pas tellement d'autres façons de faire pour un langage dynamique)
Sinon, il y a les problèmes de string et de bytestring (le plus tordu).
En Python 2, les bytestrings sont "toto" et les string sont u"toto" (" et ' sont identiques)
En Python 3, les bytestrings sont b'toto' et les string sont 'toto'. C'est beaucoup mieux, vu que les bytestring sont des chaînes d'octets (donc très rarement utiles sauf quand on fait du réseau) et les string sont des chaînes de caractères unicode (utiles 99% du temps).
…
…
sauf qu'à cause de ce préfixe u, les gens utilisaient des bytestrings en Python 2 au lieu de strings.
Tu as 2to3 qui peut faire la conversion pour toi, ça fonctionne plutôt pas mal
