I think this is a potentially exciting idea, so here is a condensed version of my notes from testing.
Testing on Windows 10, latest updates applied.
Before
C:.\temp_py> py -0p
Installed Pythons found by .\py.exe Launcher for Windows
-3.13-64 C:Users\John\AppData\Local\Programs\Python\Python313\python.exe
-3.12-64 C:\Programs\python312\python.exe
-3.10-64 C:\Programs\python310\python.exe
-2.7-64 C:\Programs\Python2\python.exe *
Downloaded python-manager-0.1a4.msix.
Doubled click on python-manager-0.1a4.msix, which I believed was the installer for the python manager. Instead it opened a command window and installed a new version of python 3.13
I think I should have been told
It was going to install python.
What version of python would be installed.
Where it would be put.
What the configuration was, as in the official download.
It should have detected 3.13.1 was already installed.
There should be a Cancel button which leaves the system unchanged.
On the plus side it was very quick.
Once installed then from a clean cmd prompt
C:\Windows\System32>py list
Managed By Tag Name Version Alias ←[0m
←[32mPythonCore 3.13.1 Python 3.13.1 3.13.1 python.exe, ...←[0m
←[36m* These runtimes may be run, but cannot be updated or uninstalled. *←[0m
PythonCore 3.13 Python 3.13 (64-bit) 3.13.1 ←[0m
PythonCore 3.12 Python 3.12 (64-bit) 3.12.8 ←[0m
PythonCore 3.10 Python 3.10 (64-bit) 3.10.4 ←[0m
PythonCore 2.7 Python 2.7 2.7 ←[0m
I was unable to get rid of ‘←[36m‘ etc.
2.7 and the original version of 3.13 could not be run despite the message ‘These runtimes may be run, but cannot …’.
Ignoring the fact that I already have and use multiple versions of python. How do I download 3.13 to c:\programs\python313?
Assuming traditional downloaders don’t exist how do I get a new version of 3.12 if I don’t want to download 3.13 as it would break something?
I found it very difficult to remove the manager from my system and it has left lots of stuff in the registry.
Using ‘app execution aliases’ to get round adding things to path was part of the reason. Running the manager seemed to add more app execution aliases every time.
In addition the new commands could only be accessed from cmd and powershell not from TCC, git bash and possibly other shell programs. That other shells may not recognise app execution aliases should be stated clearly upfront.
I am specificity interested in downloading to a target directory. I was not able to get this to work. Here is the log file generated when I tried to run the example given.
>> Writing logs to C:\Users\John\AppData\Local\Temp\python_install_20250125134151_12568.log
>> Python installation manager 0.1a4
Copyright (c) Python Software Foundation. All Rights Reserved.
BEGIN install_command.execute: ['3.13-arm64']
>> Searching for Python matching 3.13-arm64
Fetching: file:///C:/Program%20Files/WindowsApps/PythonSoftwareFoundation.PythonManager_0.1.0.164_x64__7qnp2ymwnadz2/bundled/index.json
Downloaded: <Index('file:///C:/Program%20Files/WindowsApps/PythonSoftwareFoundation.PythonManager_0.1.0.164_x64__7qnp2ymwnadz2/bundled/index.json', next='index-legacy.json', versions=[...174 entries])>
!! An error occurred. Please check any output above, or the log file, and try again.
> Log file for this session: C:\Users\John\AppData\Local\Temp\python_install_20250125134151_12568.log
> If you cannot resolve it yourself, please report the error with your log file at https://discuss.python.org/t/77900/ (during testing).
TRACEBACK:
Traceback (most recent call last):
File "manage\install_command.py", line 528, in execute
File "manage\install_command.py", line 405, in _install_one
TypeError: 'CompanyTag' object is not subscriptable
END install_command.execute
SILENCED ERROR
Traceback (most recent call last):
File "manage\install_command.py", line 528, in execute
File "manage\install_command.py", line 405, in _install_one
TypeError: 'CompanyTag' object is not subscriptable
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "manage\__init__.py", line 47, in main
File "manage\commands.py", line 597, in execute
File "manage\install_command.py", line 531, in execute
File "manage\install_command.py", line 487, in _fatal_install_error
manage.exceptions.SilentError: 1