Wingetlywingetly
← All apps

Python 3.9

by Python Software Foundationv3.9.13

Last updated

Python is a programming language that lets you work more quickly and integrate your systems more effectively.

Install with winget

$ winget install --id Python.Python.3.9 --exact --version 3.9.13

Run in Command Prompt, PowerShell, or Windows Terminal. Prompts for any agreements.

Silent install command for Python 3.9

Python 3.9 uses EXE (Burn bundle). The silent install switches are /quiet /norestart.

One-line silent install (x64, user scope)
msiexec.exe /i python-3.9.13-amd64.exe /quiet /norestart InstallAllUsers=0 PrependPath=1

See the full silent install reference for Python 3.9

Built by Pckgr

For Intune admins

Stop chasing app updates. Pckgr patches them for you.

Automated application patching for Microsoft Intune. Pckgr keeps a curated library of 1,000+ apps continuously up-to-date in your tenant via Microsoft Graph - no manual repackaging, no chasing vendor sites.

Start free 30-day trial

No credit card required.

Installers · v3.9.13

ArchitectureTypeScopeInstallDownload
x86EXE
Burn bundle
userDirect
x86EXE
Burn bundle
machineDirect
x64EXE
Burn bundle
userDirect
x64EXE
Burn bundle
machineDirect

Copy a command tailored to that specific architecture, type, and scope - useful when winget would otherwise pick a different default.

Security

25 known CVEs via NVD

  • high7.5Fix in v3.15.0CVE-2026-15308affects before 3.15.0Jul 9, 2026

    The incremental HTML parser (html.parser.HTMLParser) allows for CPU denial-of-service through repeated unterminated markup declarations when processing uncontrolled data.

  • low3.3Fix in v3.13.13CVE-2026-4519affects before 3.13.13, 3.14.4Mar 20, 2026

    The webbrowser.open() API would accept leading dashes in the URL which could be handled as command line options for certain web browsers. New behavior rejects leading dashes. Users are recommended to sanitize URLs prior to passing to webbrowser.open().

  • medium5.3Fix in v3.13.10CVE-2025-12781affects before 3.13.10, 3.14.1Jan 21, 2026

    When passing data to the b64decode(), standard_b64decode(), and urlsafe_b64decode() functions in the "base64" module the characters "+/" will always be accepted, regardless of the value of "altchars" parameter, typically used to establish an "alternative base64 alphabet" such as...

  • medium5.3Fix in v3.13.11CVE-2025-12084affects before 3.13.11, 3.14.2Dec 3, 2025

    When building nested elements using xml.dom.minidom methods such as appendChild() that have a dependency on _clear_id_cache() the algorithm is quadratic. Availability can be impacted when building excessively nested documents.

  • medium5.5Fix in v3.13.10CVE-2025-13837affects before 3.13.10, 3.14.1Dec 1, 2025

    When loading a plist file, the plistlib module reads data in size specified by the file itself, meaning a malicious file can cause OOM and DoS issues

  • high7.5Fix in v3.13.11CVE-2025-13836affects before 3.13.11Dec 1, 2025

    When reading an HTTP response from a server, if no read amount is specified, the default behavior will be to use Content-Length. This allows a malicious server to cause the client to read large amounts of data into memory, potentially causing OOM or other DoS.

  • medium5.5Patched in wingetCVE-2025-6075affects before 3.9.0, 3.13.11, 3.14.1Oct 31, 2025

    If the value passed to os.path.expandvars() is user-controlled a performance degradation is possible when expanding environment variables.

  • high7.8Fix in v3.9.21CVE-2024-9287affects before 3.9.21, 3.10.16, 3.11.11, +2 moreOct 22, 2024

    A vulnerability has been found in the CPython `venv` module and CLI where path names provided when creating a virtual environment were not quoted properly, allowing the creator to inject commands into virtual environment "activation" scripts (ie "source venv/bin/activate"). This...

Showing 8 of 25. Source: NVD, updated 5h ago. Patch status is best-effort: NVD's fix version is compared against the latest version in winget, but the two version formats don't always align. Confirm with the vendor advisory before treating any specific build as safe.

See a CVE that affects your fleet? Push the patched version to Intune in one click with Pckgr - automated patching is the only way to keep up.

Related apps

  • Python 3.12Python Software Foundation
    Python.Python.3.12v3.12.10

    Python is a programming language that lets you work more quickly and integrate your systems more effectively.

  • Python 3.14Python Software Foundation
    Python.Python.3.14v3.14.7

    A programming language that lets you work more quickly and integrate your systems more effectively.

  • Python 3.11Python Software Foundation
    Python.Python.3.11v3.11.9

    Python is a programming language that lets you work more quickly and integrate your systems more effectively.

  • Python 3.13Python Software Foundation
    Python.Python.3.13v3.13.15

    Python is a programming language that lets you work more quickly and integrate your systems more effectively.

  • Python Install ManagerPython Software Foundation
    Python.PythonInstallManagerv26.3.240.0

    Install, manage, and launch Python on Windows.

  • Python 3.8Python Software Foundation
    Python.Python.3.8v3.8.10

    Python is a programming language that lets you work more quickly and integrate your systems more effectively.

More from Python Software Foundation or browse language, programming, programming-language.

Frequently asked questions

How do I install Python 3.9 on Windows?
Open Windows Terminal, PowerShell, or Command Prompt and run: winget install --id Python.Python.3.9 --exact --version 3.9.13. winget downloads the installer from Python Software Foundation and runs it. Requires Windows 10 (1809+) or Windows 11.
How do I install Python 3.9 silently for unattended deployment?
Add --silent and accept the agreements upfront: winget install --id Python.Python.3.9 --exact 3.9.13 --silent --accept-package-agreements --accept-source-agreements. This is the variant Intune, Configuration Manager, and other deployment tools should use.
What are the silent install switches for Python 3.9?
Python 3.9 uses EXE (Burn bundle). Run the downloaded installer with: msiexec.exe /i python-3.9.13-amd64.exe /quiet /norestart InstallAllUsers=0 PrependPath=1. The silent switches are /quiet /norestart.
How do I uninstall Python 3.9 via winget?
Run: winget uninstall --id Python.Python.3.9 --exact. Add --silent for unattended uninstalls. winget will use the registered uninstaller from Python 3.9's Apps & Features entry.
Is Python 3.9 free?
Python 3.9 is distributed under PSF-2.0. Refer to the publisher (https://www.python.org/) for the full license terms - Wingetly itself does not charge for installation.
Does Python 3.9 work on Windows 10?
Yes, as long as your Windows 10 build supports winget (1809 or newer). winget ships with App Installer on Windows 10/11 and pulls Python 3.9 directly from the publisher.
How do I keep Python 3.9 up to date?
Run winget upgrade --id Python.Python.3.9 --exact, or winget upgrade --all to update everything winget tracks. We index 9 versions of Python 3.9 from microsoft/winget-pkgs.

Recent versions

  • 3.9.13latest
  • 3.9.8
  • 3.9.7
  • 3.9.6
  • 3.9.5
  • 3.9.4
  • 3.9.2
  • 3.9.1
  • 3.9.0