Every minor version of Python, that is any 3.x and 2.x version, will install side-by-side with other versions on your computer. Only patch versions will upgrade existing installations.

So if you want to keep your installed Python 2.7 around, then just let it and install a new version using the installer. If you want to get rid of Python 2.7, you can uninstall it before or after installing a newer version—there is no difference to this.

Current Python 3 installations come with the py.exe launcher, which by default is installed into the system directory. This makes it available from the PATH, so you can automatically run it from any shell just by using py instead of python as the command. This avoids you having to put the current Python installation into PATH yourself. That way, you can easily have multiple Python installations side-by-side without them interfering with each other. When running, just use py script.py instead of python script.py to use the launcher. You can also specify a version using for example py -3 or py -3.6 to launch a specific version, otherwise the launcher will use the current default (which will usually be the latest 3.x).

Using the launcher, you can also run Python 2 scripts (which are often syntax incompatible to Python 3), if you decide to keep your Python 2.7 installation. Just use py -2 script.py to launch a script.


As for PyPI packages, every Python installation comes with its own folder where modules are installed into. So if you install a new version and you want to use modules you installed for a previous version, you will have to install them first for the new version. Current versions of the installer also offer you to install pip; it’s enabled by default, so you already have pip for every installation. Unless you explicitly add a Python installation to the PATH, you cannot just use pip though. Luckily, you can also simply use the py.exe launcher for this: py -m pip runs pip. So for example to install Beautiful Soup for Python 3.6, you could run py -3.6 -m pip install beautifulsoup4.

Answer from poke on Stack Overflow
🌐
Python Central
pythoncentral.io › how-to-update-python
How to Update Python | Python Central
February 5, 2025 - In other words, you won’t need to change the PATH variable every time you want to use another version of Python. But the launcher only comes installed on the Windows version of Python 3. Updating Python in computers with Linux or macOS can be more complicated.
Top answer
1 of 10
180

Every minor version of Python, that is any 3.x and 2.x version, will install side-by-side with other versions on your computer. Only patch versions will upgrade existing installations.

So if you want to keep your installed Python 2.7 around, then just let it and install a new version using the installer. If you want to get rid of Python 2.7, you can uninstall it before or after installing a newer version—there is no difference to this.

Current Python 3 installations come with the py.exe launcher, which by default is installed into the system directory. This makes it available from the PATH, so you can automatically run it from any shell just by using py instead of python as the command. This avoids you having to put the current Python installation into PATH yourself. That way, you can easily have multiple Python installations side-by-side without them interfering with each other. When running, just use py script.py instead of python script.py to use the launcher. You can also specify a version using for example py -3 or py -3.6 to launch a specific version, otherwise the launcher will use the current default (which will usually be the latest 3.x).

Using the launcher, you can also run Python 2 scripts (which are often syntax incompatible to Python 3), if you decide to keep your Python 2.7 installation. Just use py -2 script.py to launch a script.


As for PyPI packages, every Python installation comes with its own folder where modules are installed into. So if you install a new version and you want to use modules you installed for a previous version, you will have to install them first for the new version. Current versions of the installer also offer you to install pip; it’s enabled by default, so you already have pip for every installation. Unless you explicitly add a Python installation to the PATH, you cannot just use pip though. Luckily, you can also simply use the py.exe launcher for this: py -m pip runs pip. So for example to install Beautiful Soup for Python 3.6, you could run py -3.6 -m pip install beautifulsoup4.

2 of 10
148

If you are upgrading any 3.x.y to 3.x.z (patch) Python version, just go to Python downloads page get the latest version and start the installation. Since you already have Python installed on your machine installer will prompt you for "Upgrade Now". Click on that button and it will replace the existing version with a new one. You also will have to restart a computer after installation.

If you are upgrading from 3.x to 3.y (minor) then you will be prompted with "Install Now". In this case, you are not upgrading, but you are installing a new version of Python. You can have more than one version installed on your machine. They will be located in different directories. When you have more than one Python version on your machine you will need to use py lanucher to launch a specific version of Python.

For instance:

py -3.7

or

py -3.8

Make sure you have py launcher installed on your machine. It will be installed automatically if you are using default settings of windows installer. You can always check it if you click on "Customize installation" link on the installation window.

If you have several Python versions installed on your machine and you have a project that is using the previous version of Python using virtual environment e.g. (venv) you can upgrade Python just in that venv using:

python -m venv --upgrade "your virtual environment path"

For instance, I have Python 3.7 in my ./venv virtual environment and I would like upgrade venv to Python 3.8, I would do following

python -m venv --upgrade ./venv

Discussions

upgrade - Python update - how to update `py` to point to new version? - Stack Overflow
If I open up a new Command Window ... how do I update py to point to the latest version? Are there any other considerations with respect to virtual environments? They should remain pointing to the version of python they were built with - is that true of both python and py when a venv is active? Note: py is a command-line python launcher tool included ... More on stackoverflow.com
🌐 stackoverflow.com
Python and Python Launcher
I'm also struggling with this - having deployed the latest version, I can see it installed as the SYSTEM account, but the old version remains. Installing for all users. Did you manage to sort it? More on reddit.com
🌐 r/Action1
5
2
May 27, 2025
Can you update Python on Windows from the command line?
There's a paragraph on that page aptly titled "4.1.3. Installing Without UI" More on reddit.com
🌐 r/learnpython
4
3
January 11, 2022
[Package Issue]: winget suggests upgrading Python.Launcher to 3.12 when Python 3.11 is installed
But looking at the error message ... Python Launcher 3.12 if corresponding 3.12 installation of Python isn't present correct? cc Steve Dower (@zooba) from the original package request ... Oleksandr Kalko (@tsunamistate) For Winget version v1.6, you can just "pin" that package as a walkaround. Winget will ignore that package when you invoke winget update... More on github.com
🌐 github.com
October 8, 2023
🌐
Python
docs.python.org › 3 › using › windows.html
4. Using Python on Windows — Python 3.15.2 documentation
You will not need to be an administrator (unless a system update for the C Runtime Library is required or you install the Python install manager for all users) ... The Python install manager will be installed according to the option at the bottom of the first page · The standard library, test suite, launcher and pip will be installed
🌐
Cheap Windows VPS
cheapwindowsvps.com › blog › how-to-upgrade-python-on-windows-a-comprehensive-guide
How to Upgrade Python on Windows: A Comprehensive Guide - Cheap Windows VPS
January 20, 2025 - The launcher defaults to the highest Python version available. ... The older version, version 3.10, is still around. You can see that by running py with the list switch. ... You can maintain various versions of Python on your system without causing any conflict. This approach lets you transition scripts slowly, after verifying them with the updated version.
🌐
Reddit
reddit.com › r/sysadmin › python launcher update
r/sysadmin on Reddit: Python Launcher Update
August 1, 2024 - From what I understand, the python launcher is embedded in the installation of python, and the entire application will need to be updated with a new minor version.
🌐
Python
python.org › downloads
Download Python | Python.org
1 week ago - (Updated for Azure Trusted Signing, which applies for all releases chronologically from 3.14.0a1) The Windows installers and all binaries produced as part of each Python release are signed using an Authenticode signing certificate issued to the Python Software Foundation.
Top answer
1 of 1
2

After searching for a while, I stumbled into the answer for the py update part, at least.

The py command is an executable included with Windows Python distributions starting with Python v3.3. It is called the "Python Launcher for Windows" in the official Python documentation.

  • Note: An official py command is not included with Linux Python distributions, though there is the Py Launcher for Unix available for Linux that can be installed separately and works like the Windows version.

The documentation on the Python Launcher is pretty complete, but to answer my original question, I had set the environment variable PY_PYTHON to 3.7 to declare the default Python version for py to use.

I was able to fix the issue by updating this to 3.8 and restarting any terminal and program that uses a terminal to access py/python. There are other Python environment variables so I updated them all:

UPDATE: I was able to completely remove the PYTHONHOME and PYTHONPATH variables and just use PY_PYTHON to control the default version. You can read more about these variables in the Environment Variables section of the Python Documentation

  • set PY_PYTHON to 3.8
  • set PYTHONHOME to my new Python38 directory
  • for PYTHONPATH added the new python38 and python38/scripts directories.

Note: After updating environment variables, you will need to restart some programs, and others might require either a logout or full reboot (was true of VS Code on Windows).


More info on py command and versions

You can get a list of basic py commands using py --help:

$ py --help
Python Launcher for Windows Version 3.8.150.1013

usage:
C:\WINDOWS\py.exe [launcher-args] [python-args] script [script-args]

Launcher arguments:

-2     : Launch the latest Python 2.x version
-3     : Launch the latest Python 3.x version
-X.Y   : Launch the specified Python version
     The above all default to 64 bit if a matching 64 bit python is present.
-X.Y-32: Launch the specified 32bit Python version
-X-32  : Launch the latest 32bit Python X version
-X.Y-64: Launch the specified 64bit Python version
-X-64  : Launch the latest 64bit Python X version
-0  --list       : List the available pythons
-0p --list-paths : List with paths

The version strings above used to launch a particular version of python are what can be put into the PY_PYTHON environment variable. For example, if you just wanted the latest Python3, then use 3, for a particular Python3, use 3.8, or for the 32-bit version, use 3.8-32, etc.

Find elsewhere
🌐
Updatestar
python-launcher.updatestar.com › home › development › python launcher
Python Launcher - Download
Python Launcher 3.15.150 - Our Products Most Popular Downloads Latest Updates Latest News ... All free downloads. Original files only. Virus checked and safe. ... Human-built. AI-enhanced. ... A convenient tool for easily executing Python scripts on your system. Python Launcher (py.exe) is a compact command-line utility ...
Rating: 4 ​
🌐
Mimo
mimo.org › tutorials › python › how-to-update-python
How to Update Python
If it points to something you did not expect (Microsoft Store, Anaconda, Homebrew, pyenv), update that installation method instead of adding a second one. Mixing methods often leads to PATH conflicts where the old version keeps winning. ... What to look for: py is the Windows Python Launcher.
🌐
Reddit
reddit.com › r/action1 › python and python launcher
r/Action1 on Reddit: Python and Python Launcher
May 27, 2025 -

I'm having a devil of time getting some updates applied for Python and the Python Launcher. My challenge seems to be that A1 sees both the "full" Python and the Launcher as the same thing. But then won't install:

Unable to determine the status of Python 3.13.3, because multiple matches were found: Python 3.8 (32-bit), Python Launcher. Adjust the display name match '(up-carat)Python.*' to narrow the scope.

The endpoint in question just has Python Launcher. And for the life of me I can't find a place to download an updated installer for just Python Launcher.

Any ideas?

Top answer
1 of 3
1
I'm also struggling with this - having deployed the latest version, I can see it installed as the SYSTEM account, but the old version remains. Installing for all users. Did you manage to sort it?
2 of 3
1
Funny, was just trying to get this working for new installs so I'm in a similar boat. After installing Python, it immediately uninstalls it. I tweaked version number to match as well, but no luck. The only thing that happens is the Launcher gets installed. Silent install switches I'm trying to use: /quiet InstallAllUsers=1 PrependPath=1 InstallLauncherAllUsers=1 Include_launcher=1 Following. Completed May 19, 2025 8:35 AM Warning The action completed with 1 warning(s). Deploy Software May 19, 2025 8:35 AM Success Successfully installed Python Python 3.13 (64-bit) 3.13.3150.0 (NT AUTHORITY\SYSTEM). One or more per-user installs were attempted to be removed. Deploy Software May 19, 2025 8:35 AM Success The per-user instance of Python 3.13.3150.0 has been removed for user NT AUTHORITY\SYSTEM. They will now be forced to use the machine-wide installation. Deploy Software May 19, 2025 8:34 AM Success Starting uninstallation of Python 3.13 (64-bit) 3.13.3150.0 (NT AUTHORITY\SYSTEM - EXE). Deploy Software May 19, 2025 8:34 AM Warning The install of Python finished without errors, but instead of version Python 3.13 (64-bit) 3.13.3150.0 (NT AUTHORITY\SYSTEM), the following product changes were detected: Python 3.13 (64-bit) 3.13.3150.0 (NT AUTHORITY\SYSTEM) installed. Please verify the version number and display name match parameters in the package settings. Deploy Software May 19, 2025 8:33 AM Success Installing Python Python 3.13 (64-bit) 3.13.3150.0 (NT AUTHORITY\SYSTEM). Deploy Software May 19, 2025 8:33 AM Success Starting the action. Start Automation May 19, 2025 8:33 AM Pending Waiting for the endpoint to run the automation.
🌐
InfoWorld
infoworld.com › home › software development › programming languages › python
How to use Python’s py launcher for Windows | InfoWorld
July 19, 2023 - An important thing to keep in mind about the py launcher and upgrading Python versions: whenever a new version of Python is installed, the py launcher will be updated, as long as the Python version being installed is newer than the py launcher.
🌐
4sysops
4sysops.com › home › articles › upgrade python in windows
Upgrade Python in Windows – 4sysops
February 20, 2024 - Enable the option to install py.exe with admin privileges. Py.exe is a Python launcher for Windows only, allowing you to easily execute Python scripts from the command line.
🌐
YouTube
youtube.com › jacksphotoandtech
How To Upgrade Python on Windows - YouTube
How To Upgrade Python on WindowsSometimes we all need a little help understanding how to upgrade from one software package to another. This video will help y...
Published: August 11, 2021
Views: 27K
🌐
Codemia
codemia.io › home › knowledge hub › how do i upgrade the python installation in windows 10?
How do I upgrade the Python installation in Windows 10? | Codemia
September 24, 2025 - Upgrading Python on Windows 10 is usually a matter of installing a newer release from python.org, but the installer is only part of the job. The real work is confirming which interpreter your shell uses, whether the Python launcher still points to the expected version, and whether your virtual environments need to be rebuilt.
🌐
Python
python.org › downloads › latest › pymanager
Python Release Python install manager 26.4 | Python.org
The Python install manager will automatically update within a day of an update being released.
🌐
PhoenixNAP
phoenixnap.com › home › kb › sysadmin › how to update python on windows, linux, and mac
How to Update Python on Windows, Linux, and Mac
March 12, 2026 - Python 3.14, the latest point release at the time this article was written, includes features such as Template Strings (T-Strings), Deferred Evaluation of Annotations, and numerous developer experience improvements. This tutorial shows you how to update Python to the latest version on all the major operating systems: Windows, macOS, and Linux.
🌐
Reddit
reddit.com › r/learnpython › can you update python on windows from the command line?
r/learnpython on Reddit: Can you update Python on Windows from the command line?
January 11, 2022 -

Is it possible to install or update Python system-wide through a command in CMD, Powershell, or WSL2 Bash like on Linux?

The full Python launcher installation executable file at https://docs.python.org/3/using/windows.html looks very large and spread out, compared to the single package in Unix / Linux

🌐
GitHub
github.com › brettcannon › python-launcher
GitHub - brettcannon/python-launcher: Python launcher for Unix · GitHub
This creates a virtual environment in a .venv directory using the latest version of Python installed. Subsequent uses of py will then use that virtual environment as long as it is in the current (or higher) directory; no environment activation required (although the Python Launcher supports activated environments as well)!
Top answer
1 of 7
22

In almost all cases, this is a bad idea. Changing the system Python can and quite often will break some other packages depending on the previous environment or version. Upgrading from Python 3.10 to 3.13 means quite a few things have been changed and/or removed, making such problems likely.


So, how can you use a more modern version of Python?

One way ist the way you have already gone, installing it and accessing it via python3.13.

Another way is using the deadsnakes PPA, see e.g. this answer by Hannu (but refrain from overriding your system default).


And then there are multiple ways to get access to a specific Python version within a specific project, here is a small selection:

  1. Pyenv is the classic solution for this. It allows you to download and install basically any Python version (even alpha and beta) and activate them dynamically or use them as the base for a virtual environment.
  2. UV, a upcoming Python dependency manager, can manage Python versions as well. You just have to specify the desired Python version in a .python_version file in your project root directory.
  3. Conda, another dependency manager, but not limited to Python, can also manage multiple Python versions.
2 of 7
10

A simple "clean" way to install a more recent Python3 than present in Ubuntu is the deadsnakes ppa:

Howto set the default version:
https://www.debugpoint.com/install-python-3-12-ubuntu/
... at "Use Python 3.12 as the default Python3"

The basics for installation:

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update 
sudo apt install python3.12

https://launchpad.net/~deadsnakes/+archive/ubuntu/ppa
The ppa gets updated, so a more recent one may well be present;
also ALWAYS verify the correctness of what is stated above.

🌐
GitHub
github.com › microsoft › winget-pkgs › issues › 122168
[Package Issue]: winget suggests upgrading Python.Launcher to 3.12 when Python 3.11 is installed · Issue #122168 · microsoft/winget-pkgs · GitHub
October 8, 2023 - But looking at the error message it seems one cannot upgrade to Python Launcher 3.12 if corresponding 3.12 installation of Python isn't present correct? cc Steve Dower (@zooba) from the original package request ... Oleksandr Kalko (@tsunamistate) For Winget version v1.6, you can just "pin" that package as a walkaround. Winget will ignore that package when you invoke winget update.