It is possible, and not too difficult in fact, to write a single codebase that runs under both Python 2 and Python 3. Which is what Django has done. The same code runs the same under 2.7 or 3.3 or 3.4.
This is a pretty comprehensive guide. It does rely on the future lib, which is a wrapper around six and a few others to make it easier, but you can also just write your own minimal lib for things that need to have:
if py2:
pass # Py2 specific line here
else:
pass # Py3 stuff here
I think Django has chosen the approach of having their own minimal compatibility layer, iirc.
It is possible, and not too difficult in fact, to write a single codebase that runs under both Python 2 and Python 3. Which is what Django has done. The same code runs the same under 2.7 or 3.3 or 3.4.