The Python 3.9 release was in October 2020, the next step in Python’s steady annual release cadence. It brought several improvements that many developers still rely on today, including dictionary union operators, enhanced string methods, type hinting enhancements, new PEG parser infrastructure, and performance enhancements across the standard library. However, after five years of upstream maintenance, Python 3.9 has officially reached its end-of-life (EOL) phase upstream. This article will discuss what this means for Red Hat Enterprise Linux (RHEL) 8 and 9 users.
Upstream: Python 3.9 end of life
According to the Python 3.9 release schedule, the release cycle for Python 3.9 ended on October 31, 2025, with Python 3.9.25 published as the final security release.
Starting now:
- The 3.9 codebase upstream is frozen.
- The Python Core Development team will provide no further bug fixes, security patches, or enhancements.
- No new issues will be accepted for Python 3.9 on the CPython bug tracker.
This means any unresolved upstream issues will remain unresolved, and downstream consumers must make long-term support decisions based on this final upstream state.
Python 3.9 in RHEL
Although upstream support has ended, Python 3.9 plays different roles across Red Hat Enterprise Linux releases.
RHEL 9
RHEL 9 standardizes on Python 3.9 as the system-wide default Python interpreter. Python 3.9 will be fully supported for the entire lifetime of RHEL 9, despite upstream EOL.
Red Hat will continue to maintain Python 3.9 with critical patches and security backports as part of the RHEL 9 platform guarantees. This makes RHEL 9 a stable, long-term home for Python 3.9 workloads that cannot yet upgrade to newer Python releases.
RHEL 8
In RHEL 8, the python39 module provides Python 3.9 as an alternate Python stack, existing along with the platform’s default Python 3.6.
Key points:
- Support for Python 3.9 in RHEL 8 ends at the end of November 2025.
- If you need a newer Python than 3.6 on RHEL 8, you should consider one of the following:
- Python 3.11, supported until May 2026.
- Python 3.12, supported until the end of the RHEL 8 lifecycle.
- If your workloads must remain on Python 3.9 specifically, you can use RHEL 9-based container images: UBI, S2I (refer to the Red Hat Ecosystem Catalog).
Next steps
The upstream Python 3.9 lifecycle has ended, but this does not mean your workloads must immediately migrate. Red Hat provides clear paths to balance stability, security, and long-term maintenance:
- Upstream support ended on October 31, 2025.
- RHEL 8: Python 3.9 supported until November 2025. Newer Python versions are available.
- RHEL 9: Python 3.9 remains the main interpreter, supported for the full lifecycle of RHEL 9.
- Containers based on RHEL 9 remain a strong option for Python 3.9 workloads on RHEL 8.
For those on RHEL 8, planning an upgrade path now will help ensure long-term security and compatibility. You can upgrade to Python 3.11/3.12 or RHEL 9-based containers.