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ΒΆ
Python 2 or Python 3? β the classic βwhich version should I use?β page
Python 3 FAQ β frequently asked questions about Python 3
5 Years of Python 3 β community feedback collected five years into the Python 3 era
Porting GuidesΒΆ
Porting to Py3k β the main porting guide with strategies and common issues
Porting to Py3k β single-page porting overview (Python 2 EOL notice included)
Porting Python Code to Py3k β step-by-step instructions for converting pure Python code
Porting Extension Modules to Py3k β porting C extension modules to Python 3
Porting Django to 3k β notes from an early attempt to port Django at PyCon 2008
One Codebase for Python 2 and 3 β tips for maintaining a single codebase that runs on both versions
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ΒΆ
Py3k Deprecated β features deprecated or removed in the Python 3 transition
Py3k Extension Modules β status of extension module compatibility with Python 3
Py3k Regressions β known regressions in early Python 3 releases
Py3k String Formatting β the new string formatting methods based on PEP 3101
Py3k Str/Unicode Tests β test cases for the string/unicode changes in Python 3
Py3k Todo β the old to-do list for the Python 3 transition
Python 3k String Repr β changes to string representation in Python 3
Python 3 UnicodeDecodeError β dealing with UnicodeDecodeError in Python 3
Ecosystem StatusΒΆ
Python 3 Linux Distro Porting Status β tracking Linux distribution support for Python 3
Python 3 Porting Status β tracking which third-party packages support Python 3