"Permission Denied" trying to run Python on Windows 10
Research
All of the files in %USERPROFILE%\AppData\Local\Microsoft\WindowsApps
are placeholders that point to files that are actually located somewhere in C:\Program Files\WindowsApps
, which happens to be denied permissions completely.
It appears I was on the right track with my statement made in my duplicate of this problem:
"Seems like they didn't really think about the distribution method screwing with permissions!"
Source: Cannot install pylint in Git Bash on Windows (Windows Store)
Permissions are screwed up royally because of the WindowsApps distribution method:
Interestingly it says that the "Users" group can read and execute files, as well as my specific user, but the Administrators group can only List folder contents for some hilariously unfathomable reason. And when trying to access the folder in File Explorer, it refuses to even show the folder contents, so there's something fishy about that as well.
Interestingly, even though executing python
in CMD works just fine, the "WindowsApps" folder does not show up when listing the files in the directory it resides in, and attempting to navigate into the folder generates a "Permission denied" error:
Attempting to change the permissions requires changing the owner first, so I changed the owner to the Administrators group. After that, I attempted to change the permissions for the Administrators group to include Full control, but it was unable to change this, because "access was denied" (duh, Micro$ucks, that's what we're trying to change!).
This permission error happened for so many files that I used Alt+C to quickly click "Continue" on repeat messages, but this still took too long, so I canceled the process, resulting in this warning message popping up:
And now I am unable to set the TrustedInstaller user back as the owner of the WindowsApps folder, because it doesn't show up in the list of Users/Groups/Built-in security principles/Other objects. *
*Actually, according to this tutorial, you can swap the owner back to TrustedInstaller by typing NT Service\TrustedInstaller
into the object name text box.
Solution
There is no solution. Basically, we are completely screwed. Classy move, Microsoft.
As far as I can tell, this was caused by a conflict with the version of Python 3.7 that was recently added into the Windows Store. It looks like this added two "stubs" called python.exe and python3.exe into the %USERPROFILE%\AppData\Local\Microsoft\WindowsApps
folder, and in my case, this was inserted before my existing Python executable's entry in the PATH
.
Moving this entry below the correct Python folder (partially) corrected the issue.
The second part of correcting it is to type manage app execution aliases
into the Windows search prompt and disable the store versions of Python altogether.
It's possible that you'll only need to do the second part, but on my system I made both changes and everything is back to normal now.
This appears to be a limitation in git-bash. The recommendation to use winpty python.exe
worked for me. See Python not working in the command line of git bash for additional information.