Writing valid 2.7 is not enough as you can write yourself into a non-portable corner that is hard to escape from.<p>You need to use all of the __future__ imports <i>and</i> be mindful of constructs that 2to3 will handle wrong. Better yet is to bite the bullet and make your code work with automated tests running 2to3 if all of your library dependencies have py3 support. Then you can continue to write in 2.7 and anything that runs afoul of py3 will be caught early.