Mystery Python Theater 3K

PYPTUG Presents


Francois Dion Production

Short Version

Python 2.x is legacy, Python 3.x is the present and future of the language

Tell me more

  • More consistent (see: Is Python 3 a better language to teach beginning programmers?)
  • strings are Unicode by default
  • clean Unicode/bytes separation
  • exception chaining
  • function annotations
  • syntax for keyword-only arguments
  • extended tuple unpacking
  • non-local variable declarations
  • and good 2.x practices enforced (print, format, new style classes, lazy iterators, native when available)

Next Step?

Follow the arrow...

But don't forget to come back!


Once you have confirmed that the packages you are using do have a Python 3 version (or some equivalent), it is time to do a quick check:

$ python -3


Review the warnings to see what is non trivial


No warning? Run 2to3!

$ 2to3 -w .

$ 2to3 -w -d .

Case #1


Case #2

Case #3

Providing 2 and 3

One thing that is still important at this point in time, is to provide support for both Python 2 and 3. But it doesn't mean you have to support older versions than 2.6 and 3.3. That will make your life simpler.


If you are providing a package with, make sure your is set up to install the correct code. See for more details.

Reality Check

Testing is important

Even if you are not going to have a Python 2 and Python 3 version, set up virtualenv, and some way to automate your tests.


One easy to use combo is Jenkins with Shining Panda plugin (uses virtualenv and tox). Makes it easy to use multibuild against various python interpreters, version of modules and to do coverage, code check (pep8) and automated documentation (along with sphinx).

Show Me

Python 3 availability

It's not available widely enough...


Phones (even mine), niche OSes (OI Hipster anyone?) and even...

Python 3 in Near Space

Flight #NSC01

Wall of Superpowers

Mystery Python Theater 3K

By Francois Dion

Mystery Python Theater 3K

  • 3,643
Loading comments...

More from Francois Dion