You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
Describe the bug
The executables in ~\AppData\Local\Python\bin are broken for me. With where python resolving to C:\Users\bagpuss\AppData\Local\Python\bin\python.exe:
Running python -> Access is denied.
Running C:\Users\bagpuss\AppData\Local\Python\bin\python.exe: A popup appears saying We can't open this 'ms-windows-store'; Your device needs a new app to open this link.
Likewise with C:\Users\bagpuss\AppData\Local\Microsoft\WindowsApps\python.exe or C:\Users\bagpuss\AppData\Local\Microsoft\WindowsApps\py.exe
Running py (resolves to C:\Users\bagpuss\AppData\Local\Microsoft\WindowsApps\py.exe) or C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe both correctly launch.
Additional context
This is a rather ropey Windows ARM64 VM (built using UTM). It has no network access.
Just copying your response from DPO for the sake of keeping this issue self contained.
C:\Users\bagpuss>C:\Users\bagpuss\AppData\Local\Python\bin\python.exe
[ Creates an error popup saying We can't open this 'ms-store-link'; Your device needs a new app to open this link. ]
Hmm… this is quite surprising.
ms-windows-store:// should be handled by the Store app, so if you’ve disabled, removed, corrupted, or otherwise broken that, it might be the problem. I’m not sure how you do any of those (besides disabling), but just trying to launch the Store app might provide a hint. (I assume it says ms-windows-store rather than ms-store-link, since the latter doesn’t exist… if it does say the latter, you’ve got unrelated system issues, sorry!)
But in any case, we shouldn’t be trying to launch a Store link from our install manager executables. My guess is that we’ve somehow put the path to the preinstalled python.exe into C:\Users\bagpuss\AppData\Local\Python\bin\python.exe.__target__ (which you can easily check by looking in that file), but I can’t think of any ways for that to happen naturally.
It’s possible the py install --refresh logs (or -vv output) may have a hint - could you file an issue and include the log for that? And also the py list -f json output. (These may include usernames or personal information from your system, feel free to scan and censor before posting them.) Thanks!
ms-windows-store:// should be handled by the Store app, so if you’ve disabled, removed, corrupted, or otherwise broken that, it might be the problem. I’m not sure how you do any of those (besides disabling), but just trying to launch the Store app might provide a hint
It turns out that this VM does not have the Windows store (or possibly it's very good at hiding). I didn't think that was possible. There is a repair wizard for fixing Windows store apps that told me I need to turn UAC on. Maybe no UAC is a factor...
But in any case, we shouldn’t be trying to launch a Store link from our install manager executables. My guess is that we’ve somehow put the path to the preinstalled python.exe into C:\Users\bagpuss\AppData\Local\Python\bin\python.exe.target (which you can easily check by looking in that file), but I can’t think of any ways for that to happen naturally.
Each .exe in C:\Users\bagpuss\AppData\Local\Python\bin has a ~600KB size and a corresponding $file.__target__ file that contains a plain-text path to a ...\AppData\Local\Python\pythoncore-3.14-64\python.exe (and it's always python.exe – even when the __target__ file is pip). All the pip.exe variants additionally have a corresponding .__script__.py file containing some small pip wrapper. That sound like what it's supposed to sound like?
There's also a pip3.10.exe in there whose target points to the wrong Python environment. I don't even have 3.10 on here. But probably not related...
Each .exe in C:\Users\bagpuss\AppData\Local\Microsoft\WindowsApps is an empty file. Not sure what that means?
It’s possible the py install --refresh logs (or -vv output) may have a hint - could you file an issue and include the log for that?
py install --refresh -vv logs
C:\Users\bagpuss>py install --refresh -vv
Loading configuration from C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\pymanager.json
# Setting config install to {'fallback_source': 'file:///C:/Program Files/WindowsApps/PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km/bundled/fallback-index.json', 'default_install_tag': '3'}
# Setting config list to {}
# Setting config registry_override_key to 'HKEY_LOCAL_MACHINE\\Software\\Policies\\Python\\PyManager'
# Setting config shebang_can_run_anything_silently to False
# Setting config install_dir to C:\Users\bagpuss\AppData\Local\Python
# Setting config download_dir to C:\Users\bagpuss\AppData\Local\Python\_cache
# Setting config global_dir to C:\Users\bagpuss\AppData\Local\Python\bin
# Setting config bundled_dir to C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\bundled
# Setting config user_config to C:\Users\bagpuss\AppData\Roaming\Python\PyManager.json
# Setting config pep514_root to 'HKEY_CURRENT_USER\\Software\\Python'
# Setting config start_folder to 'Python'
# Setting config launcher_exe to C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher.exe
# Setting config launcherw_exe to C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw.exe
# Setting config welcome_on_update to True
# Setting config _config_files to C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\pymanager.json
Skipping configuration at C:\Users\bagpuss\AppData\Roaming\Python\PyManager.json because it does not exist
# Get CPU architecture, its prefix is -64
# Overriding command option fallback_source with 'file:///C:/Program Files/WindowsApps/PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km/bundled/fallback-index.json'
# Overriding command option default_install_tag with '3'
# Finished processing options for install
Writing logs to C:\Users\bagpuss\AppData\Local\Temp\python_install_20260124035559_5728.log
Python installation manager 26.0b1
Copyright (c) Python Software Foundation. All Rights Reserved.
# BEGIN install_command.execute: []
Refreshing install registrations.
# Updating global shortcuts
# Reading installs from C:\Users\bagpuss\AppData\Local\Python
# Found 5 installs
# Calculating default install
# Filtering installs by tag = 3
# Filter included pythoncore-3.14-64
# Filter included pythoncore-3.13
# Filter included pythoncore-3.12
# Filter included pythoncore-3.11
# Filter included pythoncore-3.11-arm64
# tag '3' matched 5 installs
# - 5 core install(s) by prefix
# default_platform '-64' matched 1 install
# Default install will be pythoncore-3.14-64
# Calculating aliases for pythoncore-3.14-64
# Found 1 entry_points.txt files in 1 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages
# Calculating aliases for pythoncore-3.13
# Found 1 entry_points.txt files in 1 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.13\Lib\site-packages
# Calculating aliases for pythoncore-3.12
# Found 1 entry_points.txt files in 1 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.12\Lib\site-packages
# Calculating aliases for pythoncore-3.11
# Found 2 entry_points.txt files in 2 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\Lib\site-packages
# Calculating aliases for pythoncore-3.11-arm64
# Found 2 entry_points.txt files in 2 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\Lib\site-packages
# Creating aliases
# Checking for launcher for platform -64
# Create python3.14.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Checking for launcher for platform -64
# Create python3.14-64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Checking for launcher for platform -64
# Create python3.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Checking for launcher for platform -64
# Create python3-64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Checking for launcher for platform -64
# Create pythonw3.14.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Checking for launcher for platform -64
# Create pythonw3.14-64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Checking for launcher for platform -64
# Create pythonw3.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Checking for launcher for platform -64
# Create pythonw3-64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Checking for launcher for platform -64
# Create python linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Checking for launcher for platform -64
# Create pythonw linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Checking for launcher for platform -64
# Create pip linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Checking for launcher for platform -64
# Create pip3 linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Checking for launcher for platform -3.13.1
# Checking for launcher for default platform -64
# Create python3.13.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.13\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Checking for launcher for platform -3.13.1
# Checking for launcher for default platform -64
# Create pythonw3.13.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.13\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Checking for launcher for platform -3.12.8
# Checking for launcher for default platform -64
# Create python3.12.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.12\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Checking for launcher for platform -3.12.8
# Checking for launcher for default platform -64
# Create pythonw3.12.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.12\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Checking for launcher for platform -3.11.9
# Checking for launcher for default platform -64
# Create python3.11.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Checking for launcher for platform -3.11.9
# Checking for launcher for default platform -64
# Create pythonw3.11.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Checking for launcher for platform -3.11.9
# Checking for launcher for default platform -64
# Create pip3.10 linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Checking for launcher for platform -arm64
# Create python3.11-arm64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-arm64.exe
# Checking for launcher for platform -arm64
# Create python3-arm64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-arm64.exe
# Checking for launcher for platform -arm64
# Create pythonw3.11-arm64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-arm64.exe
# Checking for launcher for platform -arm64
# Create pythonw3-arm64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-arm64.exe
# Cleaning up aliases
# Retaining 23 aliases
# Creating/updating HKEY_CURRENT_USER\Software\Python\PythonCore\3.14
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\Python 3.14.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\Python 3.14 Online Documentation.lnk to https://docs.python.org/3.14/
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\IDLE (Python 3.14).lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\PyDoc (Python 3.14).lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\Python 3.14 Manuals.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\Doc\html\index.html
# Creating ARP entry for pymanager-pythoncore-3.14-64
# Searching C:\Users\bagpuss\AppData\Local\Microsoft\WindowsApps for pymanager.exe for ARP entries
# Checking C:\Users\bagpuss\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.PythonManager_3847v3x7pw1km\pymanager.exe
# Creating/updating HKEY_CURRENT_USER\Software\Python\PythonCore\3.13
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.13\Python 3.13.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.13\python.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.13\Python 3.13 Documentation.lnk to https://docs.python.org/3.13/
[WARNING] An existing runtime is registered at PythonCore\3.12 in the registry, and so the new one has not been registered.
This may prevent some other applications from detecting the new installation, although 'py -V:...' will work. To register the new installation, remove the existing runtime and then run 'py install --refresh'
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.12\Python 3.12.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.12\python.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.12\Python 3.12 Documentation.lnk to https://docs.python.org/3.12/
# Creating/updating HKEY_CURRENT_USER\Software\Python\PythonCore\3.11
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.11\Python 3.11.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\python.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.11\Python 3.11 Documentation.lnk to https://docs.python.org/3.11/
# Creating/updating HKEY_CURRENT_USER\Software\Python\PythonCore\3.11-arm64
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.11 (ARM64)\Python 3.11 (ARM64).lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\python.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.11 (ARM64)\Python 3.11 Documentation.lnk to https://docs.python.org/3.11/
# Cleaning up registry entries
# Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.11
# Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.11-arm64
# Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.12
# Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.12-arm64
# Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.13
# Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.14
# Cleaning up Start menu shortcuts
# Except: Python 3.13
# Except: Python 3.14
# Except: Python 3.13\Python 3.13 Documentation
# Except: Python 3.13\Python 3.13
# Except: Python 3.12
# Except: Python 3.12\Python 3.12
# Except: Python 3.14\Python 3.14
# Except: Python 3.11
# Except: Python 3.14\PyDoc (Python 3.14)
# Except: Python 3.12\Python 3.12 Documentation
# Except: Python 3.11\Python 3.11 Documentation
# Except: Python 3.11 (ARM64)\Python 3.11 Documentation
# Except: Python 3.14\Python 3.14 Manuals
# Except: Python 3.11\Python 3.11
# Except: Python 3.11 (ARM64)\Python 3.11 (ARM64)
# Except: Python 3.11 (ARM64)
# Except: Python 3.14\IDLE (Python 3.14)
# Except: Python 3.14\Python 3.14 Online Documentation
# Reading installs from C:\Users\bagpuss\AppData\Local\Python
# Found 5 installs
# Calculating default install
# Filtering installs by tag = 3
# Filter included pythoncore-3.14-64
# Filter included pythoncore-3.13
# Filter included pythoncore-3.12
# Filter included pythoncore-3.11
# Filter included pythoncore-3.11-arm64
# tag '3' matched 5 installs
# - 5 core install(s) by prefix
# default_platform '-64' matched 1 install
# Default install will be pythoncore-3.14-64
Python 3.14.2 will be launched by python.exe and also python3[-64].exe, python3.14[-64].exe
Python 3.13.1 will be launched by python3.13.exe
Python 3.12.8 will be launched by python3.12.exe
Python 3.11.9 will be launched by python3.11.exe
Python 3.11.9 (ARM64) will be launched by python3-arm64.exe, python3.11-arm64.exe
# END install_command.execute
This is a rather ropey Windows ARM64 VM (built using UTM). It has no network access.
This I expect is the root cause, but I'd still like to understand it.
Each .exe in C:\Users\bagpuss\AppData\Local\Python\bin has a ~600KB size and a corresponding $file.__target__ file that contains a plain-text path to a ...\AppData\Local\Python\pythoncore-3.14-64\python.exe
I was (kind of) hoping that the python.exe.__target__ pointed somewhere different, since that's the only way I can think of that running it directly could be trying to launch a Store app (I quote, "Running C:\Users\bagpuss\AppData\Local\Python\bin\python.exe: A popup appears saying We can't open this 'ms-windows-store'; ...").
I'd be less surprised if running it indirectly was resolving to the wrong app - likely the preinstalled one - but I'm utterly confused how we can have a regular exe referencing a regular exe and be getting a Store error.
it's always python.exe – even when the __target__ file is pip). All the pip.exe variants additionally have a corresponding .__script__.py file containing some small pip wrapper. That sound like what it's supposed to sound like?
Yes, this is the design. We always need to launch the executable (or find and load its DLL), and sometimes we want to launch it with a script that's derived from a package's entry points.
There's also a pip3.10.exe in there whose target points to the wrong Python environment.
Yeah, this is an authoring error in pip that has been fixed, but can't be removed from older releases.
Maybe no UAC is a factor...
Potentially, but I'd expect it to only matter when it comes to trying to repair broken stuff in the system (since "disabled" can either mean "always admin, all the time" or "never admin with no way to change that"). It shouldn't affect PyManager or any installed runtimes.
It's also possible, if you've installed all updates, that you're hitting a known issue in the January security patches. This one seems unlikely though, as that has different error messages.
Perhaps the last bits of information that are helpful here would be:
check Manage App Execution Aliases to make sure the commands are active for Python (default) or Python install manager and not something else
check the python.exe.__target__ file specifically to see if it's also pointing at the python-3.14 install and not something else
My one last idea is that somehow the hard link for the launcher executables has not worked properly (since they're all identical, we save space by making them hard links instead of copies, so that 600KB is only used once and probably in the original install directory).
Unfortunately, I don't have a good way to test that theory right now. I'll add a new config option and do another beta this week (fingers crossed) so please keep that machine if you've still got it and we can try disabling that and see if it works.
In the meantime, deleting the ...\bin directory and doing py install --refresh should regenerate all those files. It might help? It might be a hint of some kind, at least.
In the meantime, deleting the ...\bin directory and doing py install --refresh should regenerate all those files. It might help? It might be a hint of some kind, at least.
That didn't seem to do anything but upgrading to 26.0b2 fix it all.
I did get the Your app execution alias settings are configured to launch other commands besides 'py' and 'python' message on installing 26.0b2 which I wasn't expecting given that I still have all the python aliases enabled.
Because %AppData% expands to include the Roaming. It could say %UserProfile%\AppData\Roaming\Python\pymanager.json but now it's getting pretty long.
I did get the Your app execution alias settings are configured to launch other commands besides 'py' and 'python' message on installing 26.0b2 which I wasn't expecting given that I still have all the python aliases enabled.
Interesting. I wonder if you've got a non-beta install as well? Or maybe the aliases just didn't get updated properly - it happens, there's some tricky bugs around updating them that never repro well enough to get them resolved. I'm less concerned about this one, most people will only see it on first use and then will get updates automatically and won't see it again.
setting "hard_link_entrypoints": true in pymanager.json then rerunning install --refresh didn't break it
It probably didn't update anything. By default, it won't touch unchanged files, though when set it to false it'll always replace them with copies even if they look unchanged. This time, deleting them all and --refresh should change them back to hard links. The log messages are different in this case (it'll call out that it's doing links).
Interesting. I wonder if you've got a non-beta install as well?
Hmm, how would I tell? There's only one Python Installation Manager under Setting->Apps->Installed Apps. winget list has nothing to say apart from Failed when opening source(s).
It probably didn't update anything. By default, it won't touch unchanged files, though when set it to false it'll always replace them with copies even if they look unchanged. This time, deleting them all and --refresh should change them back to hard links.
Yep, that was it. I can switch back and forth between happy aliases and broken ones by deleting the aliases then running --refresh with or without hard_link_entrypoints enabled.
Logs for unhappy case
bagpuss@WINDOWS-JEJIRC0 ~
$ rm /c/Users/bagpuss/AppData/Local/Python/bin/*bagpuss@WINDOWS-JEJIRC0 ~
$ pymanager install --config pymanager.json --refresh -vv # (pymanager.json contains "hard_link_entrypoints": true)Loading configuration from C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\pymanager.json
# Setting config install to {'fallback_source': 'file:///C:/Program Files/WindowsApps/PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km/bundled/fallback-index.json', 'default_install_tag': '3', 'hard_link_entrypoints': False}
# Setting config list to {}
# Setting config registry_override_key to 'HKEY_LOCAL_MACHINE\\Software\\Policies\\Python\\PyManager'
# Setting config shebang_can_run_anything_silently to False
# Setting config install_dir to C:\Users\bagpuss\AppData\Local\Python
# Setting config download_dir to C:\Users\bagpuss\AppData\Local\Python\_cache
# Setting config global_dir to C:\Users\bagpuss\AppData\Local\Python\bin
# Setting config bundled_dir to C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\bundled
# Setting config user_config to C:\Users\bagpuss\AppData\Roaming\Python\PyManager.json
# Setting config pep514_root to 'HKEY_CURRENT_USER\\Software\\Python'
# Setting config start_folder to 'Python'
# Setting config launcher_exe to C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher.exe
# Setting config launcherw_exe to C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcherw.exe
# Setting config welcome_on_update to True
# Setting config _config_files to C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\pymanager.jsonSkipping configuration at C:\Users\bagpuss\AppData\Roaming\Python\PyManager.json because it does not existLoading configuration from pymanager.json
# Recursively updating config install
# Setting config enable_entrypoints to True
# Updating config hard_link_entrypoints from False to True
# Updating config _config_files from C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\pymanager.json to C:\Users\bagpuss\pymanager.json
# Get CPU architecture, its prefix is -64
# Overriding command option fallback_source with 'file:///C:/Program Files/WindowsApps/PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km/bundled/fallback-index.json'
# Overriding command option default_install_tag with '3'
# Overriding command option hard_link_entrypoints with True
# Overriding command option enable_entrypoints with True
# Finished processing options for installWriting logs to C:\Users\bagpuss\AppData\Local\Temp\python_install_20260127135926_5076.logPython installation manager 26.0b2Copyright (c) Python Software Foundation. All Rights Reserved.
# BEGIN install_command.execute: []Refreshing install registrations.
# Updating global shortcuts
# Reading installs from C:\Users\bagpuss\AppData\Local\Python
# Found 5 installs
# Calculating default install
# Filtering installs by tag = 3
# Filter included pythoncore-3.14-64
# Filter included pythoncore-3.13
# Filter included pythoncore-3.12
# Filter included pythoncore-3.11
# Filter included pythoncore-3.11-arm64
# tag '3' matched 5 installs
# - 5 core install(s) by prefix
# default_platform '-64' matched 1 install
# Default install will be pythoncore-3.14-64
# Calculating aliases for pythoncore-3.14-64
# Found 2 entry_points.txt files in 7 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages
# Calculating aliases for pythoncore-3.13
# Found 1 entry_points.txt files in 1 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.13\Lib\site-packages
# Calculating aliases for pythoncore-3.12
# Found 1 entry_points.txt files in 1 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.12\Lib\site-packages
# Calculating aliases for pythoncore-3.11
# Found 2 entry_points.txt files in 2 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\Lib\site-packages
# Calculating aliases for pythoncore-3.11-arm64
# Found 2 entry_points.txt files in 2 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\Lib\site-packages
# Creating aliases
# Checking for launcher for platform -64
# Create python3.14.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Created python3.14.exe as hard link to launcher-64.exe
# Checking for launcher for platform -64
# Create python3.14-64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Created python3.14-64.exe as hard link to launcher-64.exe
# Checking for launcher for platform -64
# Create python3.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Created python3.exe as hard link to launcher-64.exe
# Checking for launcher for platform -64
# Create python3-64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Created python3-64.exe as hard link to launcher-64.exe
# Checking for launcher for platform -64
# Create pythonw3.14.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Created pythonw3.14.exe as hard link to launcherw-64.exe
# Checking for launcher for platform -64
# Create pythonw3.14-64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Created pythonw3.14-64.exe as hard link to launcherw-64.exe
# Checking for launcher for platform -64
# Create pythonw3.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Created pythonw3.exe as hard link to launcherw-64.exe
# Checking for launcher for platform -64
# Create pythonw3-64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Created pythonw3-64.exe as hard link to launcherw-64.exe
# Checking for launcher for platform -64
# Create python linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Created python.exe as hard link to launcher-64.exe
# Checking for launcher for platform -64
# Create pythonw linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Created pythonw.exe as hard link to launcherw-64.exe
# Checking for launcher for platform -64
# Create pip linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Created pip.exe as hard link to launcher-64.exe
# Checking for launcher for platform -64
# Create pip3 linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Created pip3.exe as hard link to launcher-64.exe
# Checking for launcher for platform -64
# Create tuxsay linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Created tuxsay.exe as hard link to launcher-64.exe
# Checking for launcher for platform -64
# Create txs linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Created txs.exe as hard link to launcher-64.exe
# Checking for launcher for platform -3.13.1
# Checking for launcher for default platform -64
# Create python3.13.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.13\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Created python3.13.exe as hard link to launcher-64.exe
# Checking for launcher for platform -3.13.1
# Checking for launcher for default platform -64
# Create pythonw3.13.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.13\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Created pythonw3.13.exe as hard link to launcherw-64.exe
# Checking for launcher for platform -3.12.8
# Checking for launcher for default platform -64
# Create python3.12.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.12\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Created python3.12.exe as hard link to launcher-64.exe
# Checking for launcher for platform -3.12.8
# Checking for launcher for default platform -64
# Create pythonw3.12.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.12\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Created pythonw3.12.exe as hard link to launcherw-64.exe
# Checking for launcher for platform -3.11.9
# Checking for launcher for default platform -64
# Create python3.11.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Created python3.11.exe as hard link to launcher-64.exe
# Checking for launcher for platform -3.11.9
# Checking for launcher for default platform -64
# Create pythonw3.11.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcherw-64.exe
# Created pythonw3.11.exe as hard link to launcherw-64.exe
# Checking for launcher for platform -3.11.9
# Checking for launcher for default platform -64
# Create pip3.10 linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-64.exe
# Created pip3.10.exe as hard link to launcher-64.exe
# Checking for launcher for platform -arm64
# Create python3.11-arm64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-arm64.exe
# Created python3.11-arm64.exe as hard link to launcher-arm64.exe
# Checking for launcher for platform -arm64
# Create python3-arm64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcher-arm64.exe
# Created python3-arm64.exe as hard link to launcher-arm64.exe
# Checking for launcher for platform -arm64
# Create pythonw3.11-arm64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcherw-arm64.exe
# Created pythonw3.11-arm64.exe as hard link to launcherw-arm64.exe
# Checking for launcher for platform -arm64
# Create pythonw3-arm64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.178.0_x64__3847v3x7pw1km\templates\launcherw-arm64.exe
# Created pythonw3-arm64.exe as hard link to launcherw-arm64.exe
# Cleaning up aliases
# Retaining 25 aliases
# Creating/updating HKEY_CURRENT_USER\Software\Python\PythonCore\3.14
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\Python 3.14.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\Python 3.14 Online Documentation.lnk to https://docs.python.org/3.14/
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\IDLE (Python 3.14).lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\PyDoc (Python 3.14).lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\Python 3.14 Manuals.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\Doc\html\index.html
# Creating ARP entry for pymanager-pythoncore-3.14-64
# Searching C:\Users\bagpuss\AppData\Local\Microsoft\WindowsApps for pymanager.exe for ARP entries
# Checking C:\Users\bagpuss\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.PythonManager_3847v3x7pw1km\pymanager.exe
# Creating/updating HKEY_CURRENT_USER\Software\Python\PythonCore\3.13
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.13\Python 3.13.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.13\python.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.13\Python 3.13 Documentation.lnk to https://docs.python.org/3.13/[WARNING] An existing runtime is registered at PythonCore\3.12 in the registry, and so the new one has not been registered.This may prevent some other applications from detecting the new installation, although 'py -V:...' will work. To register the new installation, remove the existing runtime and then run 'py install --refresh'
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.12\Python 3.12.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.12\python.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.12\Python 3.12 Documentation.lnk to https://docs.python.org/3.12/
# Creating/updating HKEY_CURRENT_USER\Software\Python\PythonCore\3.11
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.11\Python 3.11.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\python.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.11\Python 3.11 Documentation.lnk to https://docs.python.org/3.11/
# Creating/updating HKEY_CURRENT_USER\Software\Python\PythonCore\3.11-arm64
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.11 (ARM64)\Python 3.11 (ARM64).lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\python.exe
# Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.11 (ARM64)\Python 3.11 Documentation.lnk to https://docs.python.org/3.11/
# Cleaning up registry entries
# Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.11
# Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.11-arm64
# Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.12
# Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.12-arm64
# Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.13
# Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.14
# Cleaning up Start menu shortcuts
# Except: Python 3.12
# Except: Python 3.14\PyDoc (Python 3.14)
# Except: Python 3.13
# Except: Python 3.11 (ARM64)\Python 3.11 Documentation
# Except: Python 3.11 (ARM64)\Python 3.11 (ARM64)
# Except: Python 3.13\Python 3.13
# Except: Python 3.11
# Except: Python 3.12\Python 3.12
# Except: Python 3.12\Python 3.12 Documentation
# Except: Python 3.13\Python 3.13 Documentation
# Except: Python 3.11\Python 3.11
# Except: Python 3.14
# Except: Python 3.11\Python 3.11 Documentation
# Except: Python 3.11 (ARM64)
# Except: Python 3.14\Python 3.14
# Except: Python 3.14\Python 3.14 Online Documentation
# Except: Python 3.14\Python 3.14 Manuals
# Except: Python 3.14\IDLE (Python 3.14)
# Reading installs from C:\Users\bagpuss\AppData\Local\Python
# Found 5 installs
# Calculating default install
# Filtering installs by tag = 3
# Filter included pythoncore-3.14-64
# Filter included pythoncore-3.13
# Filter included pythoncore-3.12
# Filter included pythoncore-3.11
# Filter included pythoncore-3.11-arm64
# tag '3' matched 5 installs
# - 5 core install(s) by prefix
# default_platform '-64' matched 1 install
# Default install will be pythoncore-3.14-64Python 3.14.2 will be launched by python.exe and also python3[-64].exe, python3.14[-64].exePython 3.13.1 will be launched by python3.13.exePython 3.12.8 will be launched by python3.12.exePython 3.11.9 will be launched by python3.11.exePython 3.11.9 (ARM64) will be launched by python3-arm64.exe, python3.11-arm64.exe
# END i
I can switch back and forth between happy aliases and broken ones by deleting the aliases then running --refresh with or without hard_link_entrypoints enabled.
Okay, so there's something the matter with hard links. I'll have to do some more testing, but I guess we'll probably just leave it turned off by default to avoid problems.
One last thing you might be able to try - can you add {"global_dir": "path"} into your config (top level) and set the path to a different disk drive (a virtual drive is fine, "Create a virtual disk" should be in your Start menu if you search for it), enable hard links, and refresh again. That should force Pymanager to copy the executable out of the install directory and then hard link all the other copies. That might fix it, if the problem is the link going to inside a package. If so, then I can change the behaviour to work like that and it should be a good default.
Not sure I follow why hardlinks should be ok like this but if I'm understanding your instructions then that seems to work.
bagpuss@WINDOWS-JEJIRC0 ~
$ rm /f/pymanager-path/*bagpuss@WINDOWS-JEJIRC0 ~
$ cat pymanager.json{ "global_dir": "f:\\pymanager-path", "install": { "enable_entrypoints": true, "hard_link_entrypoints": true }}bagpuss@WINDOWS-JEJIRC0 ~
$ pymanager install --refresh --config=pymanager.jsonRefreshing install registrations.[WARNING] An existing runtime is registered at PythonCore\3.12 in the registry, and so the new one has not been registered.This may prevent some other applications from detecting the new installation, although 'py -V:...' will work. To register the new installation, remove the existing runtime and then run 'py install --refresh'Global shortcuts directory is not on PATH. Add it for easy access to global Python aliases.Directory to add: f:\pymanager-pathbagpuss@WINDOWS-JEJIRC0 ~
$ forcommandin /f/pymanager-path/*.exe ;do$command -VV ;donepip 25.3 from C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pip (python 3.14)pip 24.0 from C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\Lib\site-packages\pip (python 3.11)pip 25.3 from C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages\pip (python 3.14)Python 3.14.2 (tags/v3.14.2:df79316, Dec 5 2025, 17:18:21) [MSC v.1944 64 bit (AMD64)]Python 3.14.2 (tags/v3.14.2:df79316, Dec 5 2025, 17:18:21) [MSC v.1944 64 bit (AMD64)]... lots of reassuring version outputs ...
The F drive is a new NTFS partition in case that's significant.
Not sure I follow why hardlinks should be ok like this
By default, we'll hard link into the C:\Program Files\WindowsApps\<secret path>\templates\... directory, which apparently doesn't work on your machine. But we're allowed to create the link anyway.
Once we're trying to link from F:\, the hard link fails so we do a copy. But then the subsequent hard links will link to that copy, and since it's outside of the WindowsApps folder, it apparently runs fine.
So let's consider that theory proven, and leave the "why can't I hard link inside a package" question to other people. Thanks for testing it!
Activity
bwoodsend commented on Jan 28, 2026
Just copying your response from DPO for the sake of keeping this issue self contained.
bwoodsend commented on Jan 28, 2026
It turns out that this VM does not have the Windows store (or possibly it's very good at hiding). I didn't think that was possible. There is a repair wizard for fixing Windows store apps that told me I need to turn UAC on. Maybe no UAC is a factor...
Each .exe in C:\Users\bagpuss\AppData\Local\Python\bin has a ~600KB size and a corresponding $file.__target__ file that contains a plain-text path to a ...\AppData\Local\Python\pythoncore-3.14-64\python.exe (and it's always python.exe – even when the __target__ file is pip). All the pip.exe variants additionally have a corresponding .__script__.py file containing some small pip wrapper. That sound like what it's supposed to sound like?
There's also a pip3.10.exe in there whose target points to the wrong Python environment. I don't even have 3.10 on here. But probably not related...
Each .exe in C:\Users\bagpuss\AppData\Local\Microsoft\WindowsApps is an empty file. Not sure what that means?
py install --refresh -vv logsC:\Users\bagpuss>py install --refresh -vv Loading configuration from C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\pymanager.json # Setting config install to {'fallback_source': 'file:///C:/Program Files/WindowsApps/PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km/bundled/fallback-index.json', 'default_install_tag': '3'} # Setting config list to {} # Setting config registry_override_key to 'HKEY_LOCAL_MACHINE\\Software\\Policies\\Python\\PyManager' # Setting config shebang_can_run_anything_silently to False # Setting config install_dir to C:\Users\bagpuss\AppData\Local\Python # Setting config download_dir to C:\Users\bagpuss\AppData\Local\Python\_cache # Setting config global_dir to C:\Users\bagpuss\AppData\Local\Python\bin # Setting config bundled_dir to C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\bundled # Setting config user_config to C:\Users\bagpuss\AppData\Roaming\Python\PyManager.json # Setting config pep514_root to 'HKEY_CURRENT_USER\\Software\\Python' # Setting config start_folder to 'Python' # Setting config launcher_exe to C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher.exe # Setting config launcherw_exe to C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw.exe # Setting config welcome_on_update to True # Setting config _config_files to C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\pymanager.json Skipping configuration at C:\Users\bagpuss\AppData\Roaming\Python\PyManager.json because it does not exist # Get CPU architecture, its prefix is -64 # Overriding command option fallback_source with 'file:///C:/Program Files/WindowsApps/PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km/bundled/fallback-index.json' # Overriding command option default_install_tag with '3' # Finished processing options for install Writing logs to C:\Users\bagpuss\AppData\Local\Temp\python_install_20260124035559_5728.log Python installation manager 26.0b1 Copyright (c) Python Software Foundation. All Rights Reserved. # BEGIN install_command.execute: [] Refreshing install registrations. # Updating global shortcuts # Reading installs from C:\Users\bagpuss\AppData\Local\Python # Found 5 installs # Calculating default install # Filtering installs by tag = 3 # Filter included pythoncore-3.14-64 # Filter included pythoncore-3.13 # Filter included pythoncore-3.12 # Filter included pythoncore-3.11 # Filter included pythoncore-3.11-arm64 # tag '3' matched 5 installs # - 5 core install(s) by prefix # default_platform '-64' matched 1 install # Default install will be pythoncore-3.14-64 # Calculating aliases for pythoncore-3.14-64 # Found 1 entry_points.txt files in 1 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\Lib\site-packages # Calculating aliases for pythoncore-3.13 # Found 1 entry_points.txt files in 1 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.13\Lib\site-packages # Calculating aliases for pythoncore-3.12 # Found 1 entry_points.txt files in 1 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.12\Lib\site-packages # Calculating aliases for pythoncore-3.11 # Found 2 entry_points.txt files in 2 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\Lib\site-packages # Calculating aliases for pythoncore-3.11-arm64 # Found 2 entry_points.txt files in 2 dist-info in C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\Lib\site-packages # Creating aliases # Checking for launcher for platform -64 # Create python3.14.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe # Checking for launcher for platform -64 # Create python3.14-64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe # Checking for launcher for platform -64 # Create python3.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe # Checking for launcher for platform -64 # Create python3-64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe # Checking for launcher for platform -64 # Create pythonw3.14.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe # Checking for launcher for platform -64 # Create pythonw3.14-64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe # Checking for launcher for platform -64 # Create pythonw3.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe # Checking for launcher for platform -64 # Create pythonw3-64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe # Checking for launcher for platform -64 # Create python linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe # Checking for launcher for platform -64 # Create pythonw linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe # Checking for launcher for platform -64 # Create pip linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe # Checking for launcher for platform -64 # Create pip3 linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe # Checking for launcher for platform -3.13.1 # Checking for launcher for default platform -64 # Create python3.13.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.13\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe # Checking for launcher for platform -3.13.1 # Checking for launcher for default platform -64 # Create pythonw3.13.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.13\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe # Checking for launcher for platform -3.12.8 # Checking for launcher for default platform -64 # Create python3.12.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.12\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe # Checking for launcher for platform -3.12.8 # Checking for launcher for default platform -64 # Create pythonw3.12.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.12\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe # Checking for launcher for platform -3.11.9 # Checking for launcher for default platform -64 # Create python3.11.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe # Checking for launcher for platform -3.11.9 # Checking for launcher for default platform -64 # Create pythonw3.11.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-64.exe # Checking for launcher for platform -3.11.9 # Checking for launcher for default platform -64 # Create pip3.10 linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-64.exe # Checking for launcher for platform -arm64 # Create python3.11-arm64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-arm64.exe # Checking for launcher for platform -arm64 # Create python3-arm64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\python.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcher-arm64.exe # Checking for launcher for platform -arm64 # Create pythonw3.11-arm64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-arm64.exe # Checking for launcher for platform -arm64 # Create pythonw3-arm64.exe linking to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\pythonw.exe using C:\Program Files\WindowsApps\PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km\templates\launcherw-arm64.exe # Cleaning up aliases # Retaining 23 aliases # Creating/updating HKEY_CURRENT_USER\Software\Python\PythonCore\3.14 # Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\Python 3.14.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe # Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\Python 3.14 Online Documentation.lnk to https://docs.python.org/3.14/ # Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\IDLE (Python 3.14).lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\pythonw.exe # Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\PyDoc (Python 3.14).lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\python.exe # Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.14\Python 3.14 Manuals.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.14-64\Doc\html\index.html # Creating ARP entry for pymanager-pythoncore-3.14-64 # Searching C:\Users\bagpuss\AppData\Local\Microsoft\WindowsApps for pymanager.exe for ARP entries # Checking C:\Users\bagpuss\AppData\Local\Microsoft\WindowsApps\PythonSoftwareFoundation.PythonManager_3847v3x7pw1km\pymanager.exe # Creating/updating HKEY_CURRENT_USER\Software\Python\PythonCore\3.13 # Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.13\Python 3.13.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.13\python.exe # Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.13\Python 3.13 Documentation.lnk to https://docs.python.org/3.13/ [WARNING] An existing runtime is registered at PythonCore\3.12 in the registry, and so the new one has not been registered. This may prevent some other applications from detecting the new installation, although 'py -V:...' will work. To register the new installation, remove the existing runtime and then run 'py install --refresh' # Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.12\Python 3.12.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.12\python.exe # Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.12\Python 3.12 Documentation.lnk to https://docs.python.org/3.12/ # Creating/updating HKEY_CURRENT_USER\Software\Python\PythonCore\3.11 # Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.11\Python 3.11.lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11\python.exe # Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.11\Python 3.11 Documentation.lnk to https://docs.python.org/3.11/ # Creating/updating HKEY_CURRENT_USER\Software\Python\PythonCore\3.11-arm64 # Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.11 (ARM64)\Python 3.11 (ARM64).lnk to C:\Users\bagpuss\AppData\Local\Python\pythoncore-3.11-arm64\python.exe # Creating shortcut C:\Users\bagpuss\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Python\Python 3.11 (ARM64)\Python 3.11 Documentation.lnk to https://docs.python.org/3.11/ # Cleaning up registry entries # Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.11 # Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.11-arm64 # Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.12 # Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.12-arm64 # Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.13 # Skipping HKEY_CURRENT_USER\Software\Python\PythonCore\3.14 # Cleaning up Start menu shortcuts # Except: Python 3.13 # Except: Python 3.14 # Except: Python 3.13\Python 3.13 Documentation # Except: Python 3.13\Python 3.13 # Except: Python 3.12 # Except: Python 3.12\Python 3.12 # Except: Python 3.14\Python 3.14 # Except: Python 3.11 # Except: Python 3.14\PyDoc (Python 3.14) # Except: Python 3.12\Python 3.12 Documentation # Except: Python 3.11\Python 3.11 Documentation # Except: Python 3.11 (ARM64)\Python 3.11 Documentation # Except: Python 3.14\Python 3.14 Manuals # Except: Python 3.11\Python 3.11 # Except: Python 3.11 (ARM64)\Python 3.11 (ARM64) # Except: Python 3.11 (ARM64) # Except: Python 3.14\IDLE (Python 3.14) # Except: Python 3.14\Python 3.14 Online Documentation # Reading installs from C:\Users\bagpuss\AppData\Local\Python # Found 5 installs # Calculating default install # Filtering installs by tag = 3 # Filter included pythoncore-3.14-64 # Filter included pythoncore-3.13 # Filter included pythoncore-3.12 # Filter included pythoncore-3.11 # Filter included pythoncore-3.11-arm64 # tag '3' matched 5 installs # - 5 core install(s) by prefix # default_platform '-64' matched 1 install # Default install will be pythoncore-3.14-64 Python 3.14.2 will be launched by python.exe and also python3[-64].exe, python3.14[-64].exe Python 3.13.1 will be launched by python3.13.exe Python 3.12.8 will be launched by python3.12.exe Python 3.11.9 will be launched by python3.11.exe Python 3.11.9 (ARM64) will be launched by python3-arm64.exe, python3.11-arm64.exe # END install_command.execute{ "versions": [ { "schema": 1, "id": "pythoncore-3.14-64", "sort-version": "3.14.2", "company": "PythonCore", "tag": "3.14-64", "install-for": [ "3.14.2-64", "3.14-64", "3-64", "3.14-dev-64", "3-dev-64" ], "alias": [ { "target": "python.exe", "name": "python3.14.exe" }, { "target": "python.exe", "name": "python3.14-64.exe" }, { "target": "python.exe", "name": "python3.exe" }, { "target": "python.exe", "name": "python3-64.exe" }, { "target": "pythonw.exe", "windowed": 1, "name": "pythonw3.14.exe" }, { "target": "pythonw.exe", "windowed": 1, "name": "pythonw3.14-64.exe" }, { "target": "pythonw.exe", "windowed": 1, "name": "pythonw3.exe" }, { "target": "pythonw.exe", "windowed": 1, "name": "pythonw3-64.exe" } ], "display-name": "Python 3.14.2", "executable": "C:\\Users\\bagpuss\\AppData\\Local\\Python\\pythoncore-3.14-64\\python.exe", "url": "file:///C:/Program Files/WindowsApps/PythonSoftwareFoundation.PythonManager_26.0.177.0_x64__3847v3x7pw1km/bundled/pythoncore-3.14-64-3.14.2.zip", "hash": { "sha256": "7f9f03032b19222299d04ae5b1ad459bd913bc25e8d1ff070e1a80e09a4feddf" }, "run-for": [ { "target": "python.exe", "tag": "3.14.2-64" }, { "target": "python.exe", "tag": "3.14-dev-64" }, { "target": "python.exe", "tag": "3-dev-64" }, { "target": "python.exe", "tag": "3.14-64" }, { "target": "python.exe", "tag": "3-64" }, { "target": "pythonw.exe", "windowed": 1, "tag": "3.14.2-64" }, { "target": "pythonw.exe", "windowed": 1, "tag": "3.14-dev-64" }, { "target": "pythonw.exe", "windowed": 1, "tag": "3-dev-64" }, { "target": "pythonw.exe", "windowed": 1, "tag": "3.14-64" }, { "target": "pythonw.exe", "windowed": 1, "tag": "3-64" } ], "shortcuts": [ { "kind": "pep514", "Key": "PythonCore\\3.14", "DisplayName": "Python 3.14.2", "SupportUrl": "https://www.python.org/", "SysArchitecture": "64bit", "SysVersion": "3.14", "Version": "3.14.2", "InstallPath": { "_": "%PREFIX%", "ExecutablePath": "%PREFIX%python.exe", "WindowedExecutablePath": "%PREFIX%pythonw.exe", "IdlePath": "%PREFIX%Lib\\idlelib\\idle.pyw" }, "Help": { "Online Python Documentation": { "_": "https://docs.python.org/3.14/" }, "Main Python Documentation": { "_": "%PREFIX%Doc\\html\\index.html" } } }, { "kind": "start", "Name": "Python 3.14", "Items": [ { "Name": "Python 3.14", "Target": "%PREFIX%python.exe", "Icon": "%PREFIX%python.exe" }, { "Name": "Python 3.14 Online Documentation", "Icon": "%SystemRoot%\\System32\\SHELL32.dll", "IconIndex": 13, "Target": "https://docs.python.org/3.14/" }, { "Name": "IDLE (Python 3.14)", "Target": "%PREFIX%pythonw.exe", "Arguments": "\"%PREFIX%Lib\\idlelib\\idle.pyw\"", "Icon": "%PREFIX%Lib\\idlelib\\Icons\\idle.ico", "IconIndex": 0 }, { "Name": "PyDoc (Python 3.14)", "Target": "%PREFIX%python.exe", "Arguments": "-m pydoc -b", "Icon": "%PREFIX%Lib\\idlelib\\Icons\\idle.ico", "IconIndex": 0 }, { "Name": "Python 3.14 Manuals", "Target": "%PREFIX%Doc\\html\\index.html" } ] }, { "kind": "uninstall", "Publisher": "Python Software Foundation", "HelpLink": "https://docs.python.org/3.14/" } ], "__original-shortcuts": [ { "kind": "pep514", "Key": "PythonCore\\3.14", "DisplayName": "Python 3.14.2", "SupportUrl": "https://www.python.org/", "SysArchitecture": "64bit", "SysVersion": "3.14", "Version": "3.14.2", "InstallPath": { "_": "%PREFIX%", "ExecutablePath": "%PREFIX%python.exe", "WindowedExecutablePath": "%PREFIX%pythonw.exe", "IdlePath": "%PREFIX%Lib\\idlelib\\idle.pyw" }, "Help": { "Online Python Documentation": { "_": "https://docs.python.org/3.14/" }, "Main Python Documentation": { "_": "%PREFIX%Doc\\html\\index.html" } } }, { "kind": "start", "Name": "Python 3.14", "Items": [ { "Name": "Python 3.14", "Target": "%PREFIX%python.exe", "Icon": "%PREFIX%python.exe" }, { "Name": "Python 3.14 Online Documentation", "Icon": "%SystemRoot%\\System32\\SHELL32.dll", "IconIndex": 13, "Target": "https://docs.python.org/3.14/" }, { "Name": "IDLE (Python 3.14)", "Target": "%PREFIX%pythonw.exe", "Arguments": "\"%PREFIX%Lib\\idlelib\\idle.pyw\"", "Icon": "%PREFIX%Lib\\idlelib\\Icons\\idle.ico", "IconIndex": 0 }, { "Name": "PyDoc (Python 3.14)", "Target": "%PREFIX%python.exe", "Arguments": "-m pydoc -b", "Icon": "%PREFIX%Lib\\idlelib\\Icons\\idle.ico", "IconIndex": 0 }, { "Name": "Python 3.14 Manuals", "Target": "%PREFIX%Doc\\html\\index.html" } ] }, { "kind": "uninstall", "Publisher": "Python Software Foundation", "HelpLink": "https://docs.python.org/3.14/" } ], "prefix": "C:\\Users\\bagpuss\\AppData\\Local\\Python\\pythoncore-3.14-64", "default": true }, { "schema": 1, "id": "pythoncore-3.13", "sort-version": "3.13.1", "company": "PythonCore", "tag": "3.13.1", "install-for": [ "3.13.1", "3.13", "3" ], "run-for": [ { "tag": "3.13", "target": "python.exe" }, { "tag": "3", "target": "python.exe" } ], "alias": [ { "name": "python3.13.exe", "target": "python.exe" }, { "name": "python3.exe", "target": "python.exe" }, { "name": "pythonw3.13.exe", "target": "pythonw.exe", "windowed": 1 }, { "name": "pythonw3.exe", "target": "pythonw.exe", "windowed": 1 } ], "shortcuts": [ { "kind": "pep514", "Key": "PythonCore\\3.13", "DisplayName": "Python 3.13.1", "SupportUrl": "https://www.python.org/", "SysArchitecture": "64bit", "SysVersion": "3.13", "Version": "3.13.1", "InstallPath": { "": "%PREFIX%", "ExecutablePath": "%PREFIX%python.exe", "WindowedExecutablePath": "%PREFIX%pythonw.exe" }, "Help": { "Online Python Documentation": { "": "https://docs.python.org/3.13/" } } }, { "kind": "start", "Name": "Python 3.13", "Items": [ { "Name": "Python 3.13", "Target": "%PREFIX%python.exe", "Icon": "%PREFIX%python.exe" }, { "Name": "Python 3.13 Documentation", "Icon": "%SystemRoot%\\System32\\SHELL32.dll", "IconIndex": 13, "Target": "https://docs.python.org/3.13/" } ] } ], "displayName": "Python 3.13.1", "executable": "C:\\Users\\bagpuss\\AppData\\Local\\Python\\pythoncore-3.13\\python.exe", "url": "https://api.nuget.org/v3-flatcontainer/python/3.13.1/python.3.13.1.nupkg", "__original-shortcuts": [ { "kind": "pep514", "Key": "PythonCore\\3.13", "DisplayName": "Python 3.13.1", "SupportUrl": "https://www.python.org/", "SysArchitecture": "64bit", "SysVersion": "3.13", "Version": "3.13.1", "InstallPath": { "": "%PREFIX%", "ExecutablePath": "%PREFIX%python.exe", "WindowedExecutablePath": "%PREFIX%pythonw.exe" }, "Help": { "Online Python Documentation": { "": "https://docs.python.org/3.13/" } } }, { "kind": "start", "Name": "Python 3.13", "Items": [ { "Name": "Python 3.13", "Target": "%PREFIX%python.exe", "Icon": "%PREFIX%python.exe" }, { "Name": "Python 3.13 Documentation", "Icon": "%SystemRoot%\\System32\\SHELL32.dll", "IconIndex": 13, "Target": "https://docs.python.org/3.13/" } ] } ], "source": "file:///C:/Program%20Files/WindowsApps/PythonSoftwareFoundation.PythonManager_0.1.0.164_x64__7qnp2ymwnadz2/bundled/index.json", "display-name": "Python 3.13.1", "prefix": "C:\\Users\\bagpuss\\AppData\\Local\\Python\\pythoncore-3.13" }, { "schema": 1, "id": "pythoncore-3.12", "sort-version": "3.12.8", "company": "PythonCore", "tag": "3.12.8", "install-for": [ "3.12.8", "3.12", "3" ], "run-for": [ { "tag": "3.12", "target": "python.exe" }, { "tag": "3", "target": "python.exe" } ], "alias": [ { "name": "python3.12.exe", "target": "python.exe" }, { "name": "python3.exe", "target": "python.exe" }, { "name": "pythonw3.12.exe", "target": "pythonw.exe", "windowed": 1 }, { "name": "pythonw3.exe", "target": "pythonw.exe", "windowed": 1 } ], "shortcuts": [ { "kind": "pep514", "Key": "PythonCore\\3.12", "DisplayName": "Python 3.12.8", "SupportUrl": "https://www.python.org/", "SysArchitecture": "64bit", "SysVersion": "3.12", "Version": "3.12.8", "InstallPath": { "": "%PREFIX%", "ExecutablePath": "%PREFIX%python.exe", "WindowedExecutablePath": "%PREFIX%pythonw.exe" }, "Help": { "Online Python Documentation": { "": "https://docs.python.org/3.12/" } } }, { "kind": "start", "Name": "Python 3.12", "Items": [ { "Name": "Python 3.12", "Target": "%PREFIX%python.exe", "Icon": "%PREFIX%python.exe" }, { "Name": "Python 3.12 Documentation", "Icon": "%SystemRoot%\\System32\\SHELL32.dll", "IconIndex": 13, "Target": "https://docs.python.org/3.12/" } ] } ], "displayName": "Python 3.12.8", "executable": "C:\\Users\\bagpuss\\AppData\\Local\\Python\\pythoncore-3.12\\python.exe", "url": "https://api.nuget.org/v3-flatcontainer/python/3.12.8/python.3.12.8.nupkg", "__original-shortcuts": [ { "kind": "pep514", "Key": "PythonCore\\3.12", "DisplayName": "Python 3.12.8", "SupportUrl": "https://www.python.org/", "SysArchitecture": "64bit", "SysVersion": "3.12", "Version": "3.12.8", "InstallPath": { "": "%PREFIX%", "ExecutablePath": "%PREFIX%python.exe", "WindowedExecutablePath": "%PREFIX%pythonw.exe" }, "Help": { "Online Python Documentation": { "": "https://docs.python.org/3.12/" } } }, { "kind": "start", "Name": "Python 3.12", "Items": [ { "Name": "Python 3.12", "Target": "%PREFIX%python.exe", "Icon": "%PREFIX%python.exe" }, { "Name": "Python 3.12 Documentation", "Icon": "%SystemRoot%\\System32\\SHELL32.dll", "IconIndex": 13, "Target": "https://docs.python.org/3.12/" } ] } ], "source": "file:///C:/Program%20Files/WindowsApps/PythonSoftwareFoundation.PythonManager_0.1.0.164_x64__7qnp2ymwnadz2/bundled/index.json", "display-name": "Python 3.12.8", "prefix": "C:\\Users\\bagpuss\\AppData\\Local\\Python\\pythoncore-3.12" }, { "schema": 1, "unmanaged": 1, "id": "__unmanaged-PythonCore-3.12", "sort-version": "3.12.7", "company": "PythonCore", "tag": "3.12", "run-for": [ { "tag": "3.12", "target": "python.exe" }, { "tag": "3.12", "target": "pythonw.exe", "windowed": 1 }, { "tag": "3", "target": "python.exe" }, { "tag": "3", "target": "pythonw.exe", "windowed": 1 } ], "display-name": "Python 3.12 (64-bit)", "prefix": "C:\\Users\\bagpuss\\AppData\\Local\\Programs\\Python\\Python312", "executable": "C:\\Users\\bagpuss\\AppData\\Local\\Programs\\Python\\Python312\\python.exe" }, { "schema": 1, "unmanaged": 1, "id": "__unmanaged-PythonCore-3.12-arm64", "sort-version": "3.12.7", "company": "PythonCore", "tag": "3.12-arm64", "run-for": [ { "tag": "3.12-arm64", "target": "python.exe" }, { "tag": "3.12-arm64", "target": "pythonw.exe", "windowed": 1 }, { "tag": "3", "target": "python.exe" }, { "tag": "3", "target": "pythonw.exe", "windowed": 1 } ], "display-name": "Python 3.12 (ARM64)", "prefix": "C:\\Users\\bagpuss\\AppData\\Local\\Programs\\Python\\Python312-arm64", "executable": "C:\\Users\\bagpuss\\AppData\\Local\\Programs\\Python\\Python312-arm64\\python.exe" }, { "schema": 1, "id": "pythoncore-3.11", "sort-version": "3.11.9", "company": "PythonCore", "tag": "3.11.9", "install-for": [ "3.11.9", "3.11", "3" ], "run-for": [ { "tag": "3.11", "target": "python.exe" }, { "tag": "3", "target": "python.exe" } ], "alias": [ { "name": "python3.11.exe", "target": "python.exe" }, { "name": "python3.exe", "target": "python.exe" }, { "name": "pythonw3.11.exe", "target": "pythonw.exe", "windowed": 1 }, { "name": "pythonw3.exe", "target": "pythonw.exe", "windowed": 1 } ], "shortcuts": [ { "kind": "pep514", "Key": "PythonCore\\3.11", "DisplayName": "Python 3.11.9", "SupportUrl": "https://www.python.org/", "SysArchitecture": "64bit", "SysVersion": "3.11", "Version": "3.11.9", "InstallPath": { "": "%PREFIX%", "ExecutablePath": "%PREFIX%python.exe", "WindowedExecutablePath": "%PREFIX%pythonw.exe" }, "Help": { "Online Python Documentation": { "": "https://docs.python.org/3.11/" } } }, { "kind": "start", "Name": "Python 3.11", "Items": [ { "Name": "Python 3.11", "Target": "%PREFIX%python.exe", "Icon": "%PREFIX%python.exe" }, { "Name": "Python 3.11 Documentation", "Icon": "%SystemRoot%\\System32\\SHELL32.dll", "IconIndex": 13, "Target": "https://docs.python.org/3.11/" } ] } ], "displayName": "Python 3.11.9", "executable": "C:\\Users\\bagpuss\\AppData\\Local\\Python\\pythoncore-3.11\\python.exe", "url": "https://api.nuget.org/v3-flatcontainer/python/3.11.9/python.3.11.9.nupkg", "__original-shortcuts": [ { "kind": "pep514", "Key": "PythonCore\\3.11", "DisplayName": "Python 3.11.9", "SupportUrl": "https://www.python.org/", "SysArchitecture": "64bit", "SysVersion": "3.11", "Version": "3.11.9", "InstallPath": { "": "%PREFIX%", "ExecutablePath": "%PREFIX%python.exe", "WindowedExecutablePath": "%PREFIX%pythonw.exe" }, "Help": { "Online Python Documentation": { "": "https://docs.python.org/3.11/" } } }, { "kind": "start", "Name": "Python 3.11", "Items": [ { "Name": "Python 3.11", "Target": "%PREFIX%python.exe", "Icon": "%PREFIX%python.exe" }, { "Name": "Python 3.11 Documentation", "Icon": "%SystemRoot%\\System32\\SHELL32.dll", "IconIndex": 13, "Target": "https://docs.python.org/3.11/" } ] } ], "source": "file:///C:/Program%20Files/WindowsApps/PythonSoftwareFoundation.PythonManager_0.1.0.164_x64__7qnp2ymwnadz2/bundled/index.json", "display-name": "Python 3.11.9", "prefix": "C:\\Users\\bagpuss\\AppData\\Local\\Python\\pythoncore-3.11" }, { "schema": 1, "id": "pythoncore-3.11-arm64", "sort-version": "3.11.9", "company": "PythonCore", "tag": "3.11.9-arm64", "install-for": [ "3.11.9-arm64", "3.11-arm64", "3-arm64" ], "run-for": [ { "tag": "3.11-arm64", "target": "python.exe" }, { "tag": "3-arm64", "target": "python.exe" } ], "alias": [ { "name": "python3.11-arm64.exe", "target": "python.exe" }, { "name": "python3-arm64.exe", "target": "python.exe" }, { "name": "pythonw3.11-arm64.exe", "target": "pythonw.exe", "windowed": 1 }, { "name": "pythonw3-arm64.exe", "target": "pythonw.exe", "windowed": 1 } ], "shortcuts": [ { "kind": "pep514", "Key": "PythonCore\\3.11-arm64", "DisplayName": "Python 3.11.9 (ARM64)", "SupportUrl": "https://www.python.org/", "SysArchitecture": "64bit", "SysVersion": "3.11", "Version": "3.11.9", "InstallPath": { "": "%PREFIX%", "ExecutablePath": "%PREFIX%python.exe", "WindowedExecutablePath": "%PREFIX%pythonw.exe" }, "Help": { "Online Python Documentation": { "": "https://docs.python.org/3.11/" } } }, { "kind": "start", "Name": "Python 3.11 (ARM64)", "Items": [ { "Name": "Python 3.11 (ARM64)", "Target": "%PREFIX%python.exe", "Icon": "%PREFIX%python.exe" }, { "Name": "Python 3.11 Documentation", "Icon": "%SystemRoot%\\System32\\SHELL32.dll", "IconIndex": 13, "Target": "https://docs.python.org/3.11/" } ] } ], "displayName": "Python 3.11.9 (ARM64)", "executable": "C:\\Users\\bagpuss\\AppData\\Local\\Python\\pythoncore-3.11-arm64\\python.exe", "url": "https://api.nuget.org/v3-flatcontainer/pythonarm64/3.11.9/pythonarm64.3.11.9.nupkg", "__original-shortcuts": [ { "kind": "pep514", "Key": "PythonCore\\3.11-arm64", "DisplayName": "Python 3.11.9 (ARM64)", "SupportUrl": "https://www.python.org/", "SysArchitecture": "64bit", "SysVersion": "3.11", "Version": "3.11.9", "InstallPath": { "": "%PREFIX%", "ExecutablePath": "%PREFIX%python.exe", "WindowedExecutablePath": "%PREFIX%pythonw.exe" }, "Help": { "Online Python Documentation": { "": "https://docs.python.org/3.11/" } } }, { "kind": "start", "Name": "Python 3.11 (ARM64)", "Items": [ { "Name": "Python 3.11 (ARM64)", "Target": "%PREFIX%python.exe", "Icon": "%PREFIX%python.exe" }, { "Name": "Python 3.11 Documentation", "Icon": "%SystemRoot%\\System32\\SHELL32.dll", "IconIndex": 13, "Target": "https://docs.python.org/3.11/" } ] } ], "source": "file:///C:/Program%20Files/WindowsApps/PythonSoftwareFoundation.PythonManager_0.1.0.164_x64__7qnp2ymwnadz2/bundled/index.json", "display-name": "Python 3.11.9 (ARM64)", "prefix": "C:\\Users\\bagpuss\\AppData\\Local\\Python\\pythoncore-3.11-arm64" } ] }Don't worry. Bagpuss isn't a secret. 🙂
zooba commented on Jan 28, 2026
This I expect is the root cause, but I'd still like to understand it.
I was (kind of) hoping that the python.exe.__target__ pointed somewhere different, since that's the only way I can think of that running it directly could be trying to launch a Store app (I quote, "Running C:\Users\bagpuss\AppData\Local\Python\bin\python.exe: A popup appears saying We can't open this 'ms-windows-store'; ...").
I'd be less surprised if running it indirectly was resolving to the wrong app - likely the preinstalled one - but I'm utterly confused how we can have a regular exe referencing a regular exe and be getting a Store error.
Yes, this is the design. We always need to launch the executable (or find and load its DLL), and sometimes we want to launch it with a script that's derived from a package's entry points.
Yeah, this is an authoring error in pip that has been fixed, but can't be removed from older releases.
Potentially, but I'd expect it to only matter when it comes to trying to repair broken stuff in the system (since "disabled" can either mean "always admin, all the time" or "never admin with no way to change that"). It shouldn't affect PyManager or any installed runtimes.
It's also possible, if you've installed all updates, that you're hitting a known issue in the January security patches. This one seems unlikely though, as that has different error messages.
Perhaps the last bits of information that are helpful here would be:
bwoodsend commented on Jan 31, 2026
I think so. I removed the old copy of py and pymanager so everything I have left is enabled.

Yep. The target points to the right python.exe and that python.exe works but not if launched through the alias.
zooba commented on Feb 2, 2026
My one last idea is that somehow the hard link for the launcher executables has not worked properly (since they're all identical, we save space by making them hard links instead of copies, so that 600KB is only used once and probably in the original install directory).
Unfortunately, I don't have a good way to test that theory right now. I'll add a new config option and do another beta this week (fingers crossed) so please keep that machine if you've still got it and we can try disabling that and see if it works.
In the meantime, deleting the ...\bin directory and doing py install --refresh should regenerate all those files. It might help? It might be a hint of some kind, at least.
bwoodsend commented on Feb 6, 2026
Hi, sorry these keep taking me so long.
That didn't seem to do anything but upgrading to 26.0b2 fix it all.
DetailsBut setting "hard_link_entrypoints": true in pymanager.json then rerunning install --refresh didn't break it so I guess that's that theory gone...
(Also, is there any reason why the docs for pymanager.json's location can't just say %AppData%/Roaming/Python/pymanager.json?)
I did get the Your app execution alias settings are configured to launch other commands besides 'py' and 'python' message on installing 26.0b2 which I wasn't expecting given that I still have all the python aliases enabled.
zooba commented on Feb 6, 2026
Because %AppData% expands to include the Roaming. It could say %UserProfile%\AppData\Roaming\Python\pymanager.json but now it's getting pretty long.
Interesting. I wonder if you've got a non-beta install as well? Or maybe the aliases just didn't get updated properly - it happens, there's some tricky bugs around updating them that never repro well enough to get them resolved. I'm less concerned about this one, most people will only see it on first use and then will get updates automatically and won't see it again.
It probably didn't update anything. By default, it won't touch unchanged files, though when set it to false it'll always replace them with copies even if they look unchanged. This time, deleting them all and --refresh should change them back to hard links. The log messages are different in this case (it'll call out that it's doing links).
bwoodsend commented on Feb 7, 2026
Hmm, how would I tell? There's only one Python Installation Manager under Setting->Apps->Installed Apps. winget list has nothing to say apart from Failed when opening source(s).
Yep, that was it. I can switch back and forth between happy aliases and broken ones by deleting the aliases then running --refresh with or without hard_link_entrypoints enabled.
Logs for unhappy casezooba commented on Feb 9, 2026
Okay, so there's something the matter with hard links. I'll have to do some more testing, but I guess we'll probably just leave it turned off by default to avoid problems.
One last thing you might be able to try - can you add {"global_dir": "path"} into your config (top level) and set the path to a different disk drive (a virtual drive is fine, "Create a virtual disk" should be in your Start menu if you search for it), enable hard links, and refresh again. That should force Pymanager to copy the executable out of the install directory and then hard link all the other copies. That might fix it, if the problem is the link going to inside a package. If so, then I can change the behaviour to work like that and it should be a good default.
bwoodsend commented on Feb 13, 2026
Not sure I follow why hardlinks should be ok like this but if I'm understanding your instructions then that seems to work.
The F drive is a new NTFS partition in case that's significant.
zooba commented on Feb 13, 2026
By default, we'll hard link into the C:\Program Files\WindowsApps\<secret path>\templates\... directory, which apparently doesn't work on your machine. But we're allowed to create the link anyway.
Once we're trying to link from F:\, the hard link fails so we do a copy. But then the subsequent hard links will link to that copy, and since it's outside of the WindowsApps folder, it apparently runs fine.
So let's consider that theory proven, and leave the "why can't I hard link inside a package" question to other people. Thanks for testing it!
Rework alias linking to ensure links are only created within bin dire…
Rework alias linking to ensure links are only created within bin dire…