A Python 2 and 3 compatible print function. Handles sep, end, and file arguments like like Python 3's print function.


from print23 import *

print23("Hello, world!")

print23('this', 'and', 'that', sep='|')  # this|and|that

It's not very sophistated or functional. If you want those things, have a look at my say module. This is the exact opposite--something drop-dead simple that works across Python 2 and 3 without running into any from __future__ import print_function nonsense (which causes programs to break when run under Python 3, aka "the future").

If you like, you can give it another name, such as:

from print23 import print23 as print_



from print23 import print23 as _print


...just as long as the name you give it isn't print, which will cause problems.


  • The six cross-version compatibility module contains its own print-alike, six.print_(). If you're going to import the six module for other things, feel free to use that. I do!
  • Employs the wonderful pytest and tox modules for automated multi-version testing.
  • The author, Jonathan Eunice or @jeunice on Twitter welcomes your comments and suggestions.


pip install print23

To easy_install under a specific Python version (3.3 in this example):

python3.3 -m easy_install print23

(You may need to prefix these with "sudo " to authorize installation.)