似乎一夜之间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,但也没有帮助。还有什么我该看的吗?
这是由于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中运行
这不是PowerShell的解决方案,但除了MINGW64之外,我也遇到了同样的问题。我绕过它切换到Windows子系统Linux(我想做的无论如何)作为我的终端,只是一般和在VSCode。这篇文章描述得很好:
如何配置VS Code (windows)使用Ubuntu应用程序作为终端
总而言之:
1)从Windows应用商店安装Ubuntu
2)修改默认bash CMD -> wslconfig /setdefault Ubuntu
--- 对于VSCode
3) 重新启动 VSCode
4)在VSCode中将“terminal.integrated.shell.windows”更改为“C:\WINDOWS\System32\bash.exe”(更多详细信息见上面的帖子)
现在在VSCode和WSL (Bash on Ubuntu on Windows)中运行顺畅。对你来说至少是个暂时的解决办法。