Zato blog post: A successful Python 3 migration story
The migration was from 2.7 to 2.7 and 3.x, rather than 3.x only.
I think it worth reading for anyone interested in the subject.
60,000 lines of Python and Cython, 130 external dependencies (but only
10 not already 3.x ready) took 2 people 80 hours total.
Their head start was to write the 2.7 modules, from the beginning, with
the following at the top.
from __future__ import absolute_import, division, print_function,
Terry Jan Reedy