Picking an Interpreter

Today (Python 2)

If you’re choosing a Python interpreter to use, I highly recommend you use Python 2.7.x, unless you have a strong reason not to.

Also use Python 2.7.x if you’re starting to work on a new Python module. If you have managed to get it working on 2.7, you can add support for older 2.x versions.

The Future (Python 3)

Python 2.x is the status quo, Python 3.x is the shiny new thing.

Further Reading

Python 3, on the other hand, differs much more greatly from Python 2, so writing code that works both on Python 2 and Python 3 is a very complicated process.

It is still possible to write code that works on Python 2.6, 2.7 and 3.3. Depending on the kind of software you are writing, this might be either tricky or extremely hard, and if you’re a beginner there are much more important things to worry about.


There are several popular implementations of the Python programming language on different back-ends.


CPython is the reference implementation of Python, written in C. It compiles Python code to intermediate bytecode which is then interpreted by a virtual machine. When people speak of Python they often mean not just the language but also this implementation. It provides the highest level of compatibility with Python packages and C extension modules.

If you are writing open-source Python code and want to reach the widest possible audience, targeting CPython is your best bet. If you need to use any packages that rely on C extensions for their functionality (e.g., numpy) then CPython is your only choice.

Being the reference implementation, all versions of the Python language are available as CPython.


PyPy is a Python interpreter implemented in a restricted statically-typed subset of the Python language called RPython. The interpreter features a just-in-time compiler and supports multiple back-ends (C, CLI, JVM).

PyPy aims for maximum compatibility with the reference CPython implementation while improving performance.

If you are looking to squeeze more performance out of your Python code, it’s worth giving PyPy a try. On a suite of benchmarks, it’s currently over 5 times faster than CPython.

Currently PyPy supports Python 2.7. PyPy3 which targets Python 3 was recently available as a beta release. [1]


Jython is a Python implementation that compiles Python code to Java bytecode that is then executed in a JVM. It has the additional advantage of being able to import and use any Java class like a Python module.

If you need to interface with an existing Java codebase or have other reasons to need to write Python code for the JVM, Jython is the best choice.

Jython currently supports up to Python 2.5. [2]


IronPython is an implementation of Python for the .NET framework. It can use both Python and .NET framework libraries, and can also expose Python code to other .NET languages.

Python Tools for Visual Studio integrates IronPython directly into the Visual Studio development environment, making it an ideal choice for Windows developers.

IronPython supports Python 2.7. [3]