I ported a python2 app with py2to3 a couple months ago and it wasn't completely painless.
The worst problem I ran into was that it didn't know which strings were supposed to be bytes or unicode. And the program would throw a runtime error when it tried to do something like use a byte regex on a unicode string.