Python 3.10 Is End of Life: What Changed on Oct 1 and How to Upgrade Safely
Python 3.10 stopped receiving security fixes on October 1, 2026, and AWS Lambda deprecates its python3.10 runtime on October 31. Here is which Python versions are still supported and how to plan a safe upgrade.
Python 3.10 reached end of life on October 1, 2026, five years after its first release on October 4, 2021. The same day, the core developers shipped Python 3.10.22, the last security release the branch will ever get, and froze its codebase: no more patches, and no new bug reports accepted on the tracker.
Your Python 3.10 code will not stop running. What changes is that any vulnerability found from now on in the interpreter or standard library stays unfixed for that version. Cloud platforms are already moving too. AWS Lambda deprecates its python3.10 runtime on October 31, 2026, and Google Cloud Run functions began deprecating its own Python 3.10 runtime on October 4.
This guide explains what end of life actually means for Python, which versions are safe to target today, and how to plan an upgrade without breaking your projects.
Key facts at a glance
- Python 3.10 is end of life as of October 1, 2026. Version 3.10.22 was the final release.
- Supported versions are now 3.11, 3.12, 3.13, 3.14 and 3.15. Python 3.11 is the next to go, in October 2027.
- Python 3.15.0 shipped on October 9, 2026, and 3.15.2 followed on October 26.
- AWS Lambda deprecates
python3.10on October 31, 2026, then blocks new functions on July 29, 2027 and updates on August 31, 2027. - Google Cloud Run functions decommissions its Python 3.10 runtime on April 4, 2027.
Who this guide is for
This is for developers who maintain Python applications, scripts, data pipelines or serverless functions, and for the people who manage their servers and containers. It is especially relevant if you work on older services that were last touched a few years ago, since Python 3.10 was a common default in 2022 and 2023.
If you only use Python through a desktop app that bundles its own copy, you usually do not need to act. The vendor of that app is responsible for updating it.
How the Python release cycle works
Python releases a new feature version every year, each October, under a 12-month cadence set out in PEP 602. Every version then moves through fixed phases, which the core team publishes on its version status page.
Bugfix phase. Once a version is released, it gets bug fixes and security fixes, with new installers roughly every two months. From Python 3.13 onward this phase lasts two years. For earlier versions, including 3.10, it lasted 18 months.
Security phase. After that, only security fixes are accepted. They ship as source-only releases when needed, without Windows or macOS installers.
End of life. Five years after the first release, support stops completely.
Python 3.10 followed this path closely. Its last regular bugfix release with installers, 3.10.11, came out on April 5, 2023. It then received eleven source-only security releases, from 3.10.12 in June 2023 to 3.10.22 on October 1, 2026.
| Version | First release | Current phase | End of life |
|---|---|---|---|
| 3.15 | Oct 9, 2026 | Bugfix | Oct 2031 |
| 3.14 | Oct 7, 2025 | Bugfix | Oct 2030 |
| 3.13 | Oct 7, 2024 | Security | Oct 2029 |
| 3.12 | Oct 2, 2023 | Security | Oct 2028 |
| 3.11 | Oct 24, 2022 | Security | Oct 2027 |
| 3.10 | Oct 4, 2021 | End of life | Oct 1, 2026 |
Source: Python core team version status page and release schedules (PEP 619, PEP 745, PEP 790).
Python 3.9 reached end of life a year earlier, on October 31, 2025. The next feature version, 3.16, is scheduled for October 6, 2027.
What end of life means in practice
Security fixes stop. This is the main risk. Python 3.10 is a mature release, but the standard library includes parsers for things like URLs, email, archives and XML, and those areas still get security fixes in newer branches. From now on, those fixes will not be backported to 3.10.
Your operating system may still patch it. Linux distributions that ship Python 3.10 as their system Python can keep applying their own fixes under their own support policy. That only covers the copy installed from the distribution's packages, not a version you built or installed separately. Check your distribution's own security notices before assuming you are covered.
Libraries will drop it. Popular packages usually stop supporting a Python version around the time it reaches end of life. Over the coming months, new releases of many libraries will declare a minimum of Python 3.11 or later. You will still be able to install older versions of those libraries, but you will miss their own bug and security fixes.
Cloud runtimes are retiring it. Managed platforms tie their runtimes to upstream support.
| Platform | Python 3.10 status | Key dates |
|---|---|---|
| AWS Lambda | Deprecated Oct 31, 2026 | Create blocked Jul 29, 2027; update blocked Aug 31, 2027 |
| Google Cloud Run functions | Deprecated Oct 4, 2026 | Decommissioned Apr 4, 2027 |
| Azure Functions | Not on the supported list | Supported range starts at Python 3.11 (until Oct 2027) |
Sources: AWS Lambda runtimes documentation; Google Cloud Run functions runtime support schedule; Azure Functions supported languages documentation.
AWS notes that its Python 3.10 and 3.11 runtimes are built on Amazon Linux 2, which reached end of life on June 30, 2026. The company recommends moving to runtimes based on Amazon Linux 2023, which include Python 3.12 and later. Google says that once a runtime is decommissioned, existing functions may be disabled and creation and redeployment stop.
Step by step: how to upgrade
1. Find every place Python 3.10 runs
Start with an inventory. On a server or laptop, run:
python3 --version
Then check the places that pin a version without you noticing: Dockerfiles that start from a python:3.10 base image, CI pipeline files, pyproject.toml entries such as requires-python, serverless function configurations, and virtual environments created years ago. Searching your repositories for the string "3.10" is a quick first pass.
2. Pick your target version
For most teams, the sensible choice is Python 3.13 or 3.14. Both are supported until 2029 and 2030 respectively, and both are available as managed runtimes on Lambda and Google Cloud. Python 3.15 is the newest, with support until October 2031, but it is only a few weeks old, AWS lists its Lambda runtime as a public preview with a target launch in November 2026, and some libraries may not publish wheels for it yet.
Jumping only to 3.11 is the smallest change, but 3.11 itself reaches end of life in October 2027, so you would repeat this work within a year.
3. Test before you switch
Create a fresh virtual environment with the new interpreter, install your dependencies and run your test suite:
python3.13 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Upgrade dependencies that fail to install first, since old pinned versions are the most common blocker. Read the "What's New" notes for each version you skip; they list removed modules and deprecated behaviour. Check deprecation warnings in your test output, because they show what the next version will remove.
4. Roll out gradually
Update one service, container image or function at a time. For Lambda and Cloud Run functions, change the runtime setting, redeploy and watch error rates before moving on. Keep the old build available until you are confident.
What you gain by moving
Upgrading is not only about avoiding risk. The Python team measured Python 3.11 as about 1.25 times faster than 3.10 on average on its standard benchmark suite, thanks to the Faster CPython work. Later versions add better error messages, typing improvements and other runtime changes.
Features you rely on from 3.10, such as structural pattern matching and the X | Y syntax for union types, carry forward unchanged.
What to do if something goes wrong
If a dependency will not install on the new version, check whether a newer release of it supports your target, or whether a maintained alternative exists. If a library is abandoned and still pins old Python, treat that as a separate risk to fix.
If you cannot upgrade a system in time, reduce exposure while you plan: keep it off the public internet where possible, limit what data it can reach, and use your Linux distribution's patched system Python rather than an unpatched custom build. On Lambda, functions on a deprecated runtime keep running, but AWS says it may no longer apply security patches and provides deprecated runtimes as-is, so do not treat the July 2027 block date as a safe deadline.
Conclusion
- Check now where Python 3.10 still runs, including containers, CI and serverless functions.
- Target 3.13 or 3.14 for a long support window and broad cloud availability.
- Prioritise Lambda and Cloud Run functions, which are already in their deprecation periods.
- Test in a fresh environment and upgrade old pinned dependencies first.
- Put October 2027 in your calendar, when Python 3.11 reaches end of life too.