Python 3 Migration

This section is largely a historical archive. Python 2 reached end-of-life on January 1, 2020, and the migration is long over for most projects. But these pages document the community’s multi-year effort to move from Python 2 to Python 3 – the tools that were built, the problems that came up, the porting guides that were written, and the debates that shaped the transition. If you are still maintaining a Python 2 codebase (it happens), the porting guides here are still technically accurate.

Overview and FAQ

Porting Guides

Conversion Tools

  • 2to3 – the automatic translation tool for converting Python 2 code to Python 3

  • 3to2 – the reverse tool for backporting Python 3 code to Python 2

  • Py3k Conversion Tools – roundup of available tools for the 2-to-3 transition

Python 3 Design and Planning

  • Python 3.0 – Guido’s original goals for Python 3.0, later consolidated into PEP 3000

  • Python 3.0 Suggestions – community suggestions for what Python 3.0 should include

  • Python 3000 – the early planning page (largely of historical interest since 2008)

  • Martin von Loewis – pages from Martin von Loewis related to the Python 3 transition

Python 3 Technical Details

Ecosystem Status