About Python 3.12
Python is a programming language that lets you work more quickly and integrate your systems more effectively.
Python is a programming language that lets you work more quickly and integrate your systems more effectively.
Python is a programming language that lets you work more quickly and integrate your systems more effectively.
macOS
- gh-124111: Update macOS installer to use Tcl/Tk 8.6.16.
- gh-131423: Update macOS installer to use OpenSSL 3.0.16. Patch by Bénédikt Tran.
- gh-131025: Update macOS installer to ship with SQLite 3.49.1.
- gh-91132: Update macOS installer to use ncurses 6.5.
Windows
- gh-131423: Update bundled version of OpenSSL to 3.0.16. The new build also disables uplink support, which may be relevant to embedders but has no impact on normal use.
- gh-131025: Update Windows installer to ship with SQLite 3.49.1.
- gh-131020: pylauncher correctly detects a BOM when searching for the shebang. Fix by Chris Eibl.
Tools/Demos
- gh-131852: msgfmt no longer adds the POT-Creation-Date to generated .mo files for consistency with GNU msgfmt.
- gh-85012: Correctly reset msgctxt when compiling messages in msgfmt.
Tests
- gh-131050: test_ssl.test_dh_params is skipped if the underlying TLS library does not support finite-field ephemeral Diffie-Hellman.
- gh-119727: Add --single-process command line option to Python test runner (regrtest). Patch by Victor Stinner.
Security
- gh-131809: Update bundled libexpat to 2.7.1
- gh-131261: Upgrade to libexpat 2.7.0
- gh-127371: Avoid unbounded buffering for tempfile.SpooledTemporaryFile.writelines(). Previously, disk spillover was only checked after the lines iterator had been exhausted. This is now done after each line is written.
- gh-121284: Fix bug in the folding of rfc2047 encoded-words when flattening an email message using a modern email policy. Previously when an encoded-word was too long for a line, it would be decoded, split across lines, and re-encoded. But commas and other special characters in the original text could be left unencoded and unquoted. This could theoretically be used to spoof header lines using a carefully constructed encoded-word if the resulting rendered email was transmitted or re-parsed.
Library
- gh-116608: undeprecate functional API for importlib.resources
- gh-132075: Fix possible use of socket address structures with uninitialized members. Now all structure members are initialized with zeroes by default.
- gh-132002: Fix crash when deallocating contextvars.ContextVar with weird unahashable string names.
- gh-131668: socket: Fix code parsing AF_BLUETOOTH socket addresses.
- gh-131492: Fix a resource leak when constructing a gzip.GzipFile with a filename fails, for example when passing an invalid compresslevel. …
| Publisher | Python Software Foundation |
|---|---|
| Version | 3.12.10 |
| Release date | 2025-04-08 |
| License | PSF-2.0 |
| Installer type | burn |
| Architecture | x86, x64, arm64 |
| Package ID | Python.Python.3.12 |
winget install --id=Python.Python.3.12 -ewinget upgrade --id=Python.Python.3.12 -ewinget uninstall --id=Python.Python.3.12 -e"python-3.12.10-amd64.exe" /quiet /norestartPython 3.12 is psf-2.0 software from Python Software Foundation. Check the publisher's license terms for pricing and usage rights.
The latest version is 3.12.10, released on Apr 8, 2025.
The download button links to the official installer published on python.org, the same file Windows Package Manager installs. You can verify the downloaded file by comparing its SHA-256 checksum with 67b5635e80ea51072b87941312d00ec8927c4db9ba18938f7ad2d27b328b95fb.
Python 3.12 runs on Windows and is available for 32-bit (x86), 64-bit (x64), ARM64 systems.
Run the offline installer with "python-3.12.10-amd64.exe" /quiet /norestart, or install it with Windows Package Manager: winget install --id=Python.Python.3.12 -e --silent.
Open Settings › Apps › Installed apps, find Python 3.12 and select Uninstall. From the command line, run winget uninstall --id=Python.Python.3.12 -e.