似乎一夜之间Windows 10的更新破坏了Python。只是试图运行python——version返回一个“Permission Denied”错误。三个更新都没有;KB4507453、KB4506991或KB4509096似乎是罪魁祸首,但出现问题的时间令人怀疑。与其搞砸回滚,我希望有一个我错过的更简单的解决方法。

python的权限是“-rwxr-xr-x”,除了让Windows更新在安装昨晚的补丁后重新启动机器外,我没有改变任何东西。

根据系统信息,我正在运行10.0.18362

还应该注意,无论我(尝试)从git-bash执行Python使用“作为管理员运行”或不,如果我尝试使用PowerShell,它只是打开Windows商店,好像应用程序没有安装,所以我认为它不能看到我的/c/Users/david/AppData/Local/Microsoft/WindowsApps/文件夹的内容。

我还尝试重新安装Python 3.7.4,但也没有帮助。还有什么我该看的吗?


当前回答

对于那些想要使用微软商店版本的Python的人来说,在@Zooba修复了相关的“管理应用程序执行别名”之后,并且正在使用Git For Windows Git - BASH(也称为BASH through msys2 mintty),解决方案可能只是记住使用winpty进行调用。

winpty python3

但是,如果系统有其他版本的Python,请确保这些副本已被删除(例如从python.org安装的那些)或包含在其特定的捆绑应用程序中(例如OSGeo4W)(可能需要重新排序环境变量)。

Why, if winpty is forgotten, is it a permission error? For the first time it runs, the Microsoft Store stubs are conflicting with the permissions available to msys. A lot of the other answers go into the details of what is going on and why it feels weird. The short answer, is that the stub is trying to be a convenience short-cut to the Microsoft Store. If you launch it with winpty, it can do that. After that first time, it continues to need winpty for both related and unrelated reasons to the Microsoft Store.

其他回答

对我来说,我尝试管理应用程序执行别名,并得到一个python3不是命令的错误,因此,我使用py而不是python3,它工作

我不知道为什么会这样,但这对我很有效

我有这个运行/执行,但没有工作

python3 -m http.server 8080

在阅读并尝试了上面的一些解决方案之后,对我来说有用的是

python -m http.server 8080

这似乎是git-bash的一个限制。使用winpty python.exe的建议对我有用。有关其他信息,请参阅git bash命令行中的Python不工作。

Windows 10

开放式控制面板 单击系统 单击高级系统设置链接 单击“环境变量”按钮 在System Variables部分中找到PATH环境变量并选择它 单击编辑(如果PATH环境变量不存在,则单击新建) 在“编辑环境变量”窗口中指定PATH环境变量的值 单击OK 单击OK关闭所有剩余窗口 重新打开命令提示符窗口,执行python——version命令

这是由于Windows应用程序执行别名在Git-Bash中的工作方式。

这是MSYS2中一个已知的问题,无法通过IO_REPARSE_TAG_APPEXECLINK访问Windows重解析点

作为一种变通方法,您可以为在底层使用cmd.exe的函数调用命名别名。

将以下内容添加到~/。bashrc文件(::

function python { cmd.exe /c "python $1 $2 $3";}

对于python,我建议关闭应用程序执行别名,就像接受的答案一样,但对于像winget这样专门通过windows商店分发的库,这是最好的选择。

进一步的阅读

bash: Local/Microsoft/WindowsApps/python3: Permission denied . sh 从bash运行时拒绝权限 由于exec格式错误#234,winget无法在WSL2中运行