Cython can probably compile your existing codebase such that it's compatible with both 2 and 3. Then you can write your new code in Python 3, while importing the old code as a C extension.
You can also do this piece-by-piece, if for some reason your code doesn't compile with Cython right away.
The compilation process also makes it much easier to identify bytes/unicode bugs, because you can choose to declare types.