Modernize Python
Operational guides for modernizing Python: the Python 3.14 upgrade hub, Python 2-to-3, 3.8-to-3.12, and 3.12-to-3.14 migration paths, setup.py-to-pyproject.toml packaging, and dependency-error fixes.
Last verified · Updated May 22, 2026
Python modernization spans the legacy 2-to-3 jump and the steady 3.x cadence: distutils removal (3.12), the PEP 594 "dead batteries" removals (3.13), and lazy annotations plus the officially supported free-threaded (no-GIL) build (3.14). This hub links every supported upgrade path plus the workflows for the errors those upgrades surface.
What this covers
Start at the Python 3.14 upgrade hub for the breaking-change picture, then pick the source-to-target page matching the version you are on. Each page includes a repo-inspection prompt, step-by-step migration, test plan, and rollback guidance.
Version timeline
- 3.14 — current, active (released 2025-10-07 · EOL 2030-10-31)
- 3.13 — active (released 2024-10-07 · EOL 2029-10-31)
- 3.12 — security_only (released 2023-10-02 · EOL 2028-10-31)
- 3.8 — eol (released 2019-10-14 · EOL 2024-10-07)
- 2.7 — eol (released 2010-07-03 · EOL 2020-01-01)
Python migration paths
- Python 2 to Python 3 Migration Guide — Version path
- Python 3.12 to 3.14 Migration Guide — Version path
- Python 3.8 to 3.12 Migration Guide — Version path
- Migrate setup.py to pyproject.toml — Migration
- Upgrade to Python 3 — Upgrade hub
- Upgrade to Python 3 — Version path
- Upgrade to Python 3.14 — Upgrade hub
- Upgrade to Python 3.14 — Version path
- Fix Python Dependency Errors — Workflow
Frequently asked questions
Which Python version should I target?
Python 3.14 is the current stable release (3.14.0 shipped 2025-10-07) and the recommended target. Python 3.13 is also fully supported. Python 3.12 is now in security-only maintenance through October 2028. If you are still on Python 2.7, treat the move to Python 3 as a separate, high-risk project before chasing the latest 3.x.