Notice: This page displays a fallback because interactive scripts did not run. Possible causes include disabled JavaScript or failure to load scripts or stylesheets.
Warning: Python 3.9.21 reached end-of-life on 2025-10-31. It is no longer supported and does not receive security updates. We recommend upgrading to the latest Python release.
Note: Python 3.9.21 has been superseded by Python 3.9.25.
Release date: Dec. 3, 2024
This is a security release of Python 3.9
Note: The release you're looking at is Python 3.9.21, a security bugfix release for the legacy 3.9 series. Python 3.13 is now the latest feature release series of Python 3. Get the latest release of 3.13.x here.
Security content in this release
- gh-126623: Upgraded libexpat to 2.6.4 to fix CVE-2024-50602.
- gh-122792: Changed IPv4-mapped
ipaddress.IPv6Addressto consistently use the mapped IPv4 address value for deciding properties. Properties which have their behavior fixed areis_multicast,is_reserved,is_link_local,is_global, andis_unspecified. - gh-124651: Properly quote template strings in
venvactivation scripts. - gh-103848: Added checks to ensure that [ bracketed ] hosts found by
urllib.parse.urlsplit()are of IPv6 or IPvFuture format. - gh-95588: Clarified the conflicting advice given in the
astdocumentation aboutast.literal_eval()being “safe” for use on untrusted input while at the same time warning that it can crash the process. The latter statement is true and is deemed unfixable without a large amount of work unsuitable for a bugfix. So we keep the warning and no longer claim that literal_eval is safe.
No installers
According to the release calendar specified in PEP 596, Python 3.9 is now in the "security fixes only" stage of its life cycle: the 3.9 branch only accepts security fixes and releases of those are made irregularly in source-only form until October 2025. Python 3.9 isn't receiving regular bug fixes anymore, and binary installers are no longer provided for it. Python 3.9.13 was the last full bugfix release of Python 3.9 with binary installers.
Files
| Version | Operating system | Description | File size | Sigstore | GPG | MD5 checksum | |
|---|---|---|---|---|---|---|---|
| Gzipped source tarball | Source release | 24.9 MB | .sigstore | SIG | e61b3568082b57d5 5fd74cfc7ca020b4 |
||
| XZ compressed source tarball | Source release | 18.7 MB | .sigstore | SIG | e8ab0f9a295f1242 8310f409abd79e9c |
||