"Permission Denied" 试图 运行 Python Windows 10
"Permission Denied" trying to run Python on Windows 10
似乎 Windows 10 的更新在一夜之间中断了 Python。只是尝试 运行 python --version
返回了 "Permission Denied" 错误。 None三个更新; KB4507453、KB4506991 或 KB4509096 看起来像是罪魁祸首,但问题出现的时间值得怀疑。我希望有一个更简单的修复方法,而不是搞乱回滚。
python的权限是“-rwxr-xr-x”,除了让Windows更新安装昨晚的补丁后重启机器外,我没有做任何更改。
根据系统信息,我运行宁10.0.18362
还应注意,无论我(尝试)使用 "run as administrator" 从 git-bash 执行 Python 与否,以及如果我尝试使用PowerShell,它只是打开 Windows 商店,就好像没有安装应用程序一样,所以我认为它出于某种原因看不到我的 /c/Users/david/AppData/Local/Microsoft/WindowsApps/
文件夹的内容。
我也曾尝试重新安装 Python 3.7.4,但这也无济于事。还有什么我应该看的吗?
这不是 PowerShell 的解决方案,但我遇到了同样的问题,但 MINGW64 除外。我通过切换到 Linux 的 Windows 子系统(我无论如何都想这样做)作为我的终端来绕过它,只是一般和 VSCode。这个post描述的很好:
How to configure VS Code (windows) to use Ubuntu App as terminal
总结:
1) 从 Windows App Store
安装 Ubuntu
2) 从 CMD -> wslconfig /setdefault Ubuntu
更改默认值 bash
--- 对于 VSCode
3) 重启VSCode
4) 在 VSCode 中将 "terminal.integrated.shell.windows" 更改为 "C:\WINDOWS\System32\bash.exe"(有关详细信息,请参阅上面的 post)
运行 现在在 VSCode 和 WSL 中顺利进行(Bash 在 Ubuntu 在 Windows 上)。可能至少是您的临时解决方案。
也许您可以尝试使用管理员权限打开命令提示符。 (运行 作为管理员)。大部分时间都为我工作。
据我所知,这是由于与最近添加到 Windows 商店的 Python 3.7 版本冲突引起的。看起来这在 %USERPROFILE%\AppData\Local\Microsoft\WindowsApps
文件夹中添加了两个名为 python.exe 和 python3.exe 的 "stubs",在我的例子中,这是在 before 中插入的] 我现有的 Python 可执行文件在 PATH
.
中的条目
将此条目移到正确的 Python 文件夹下(部分)更正了该问题。
纠正它的第二部分是在 Windows 搜索提示中键入 manage app execution aliases
并完全禁用 Python 的商店版本。
有可能你只需要做第二部分,但在我的系统上我做了两个更改,现在一切都恢复正常了。
研究
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps
中的所有文件都是占位符,指向实际位于 C:\Program Files\WindowsApps
中某处的文件,恰好完全被拒绝了权限。
看来我在这个问题的副本中所做的陈述是正确的:
"Seems like they didn't really think about the distribution method screwing with permissions!"
来源:Cannot install pylint in Git Bash on Windows (Windows Store)
由于 WindowsApps 分发方法,权限被严重破坏:
有趣的是,它说 "Users" 组可以读取和执行文件,以及我的特定用户,但 Administrators 组出于某些滑稽的深不可测的原因只能列出文件夹内容。当尝试访问文件资源管理器中的文件夹时,它甚至拒绝显示文件夹内容,所以这也有些可疑。
有趣的是,尽管在 CMD 中执行 python
工作得很好,但 "WindowsApps" 文件夹在列出其所在目录中的文件并尝试导航到该文件夹时不会显示生成 "Permission denied" 错误:
尝试更改权限需要先更改所有者,所以我将所有者更改为管理员组。在那之后,我试图更改 Administrators 组的权限以包括完全控制,但无法更改此权限,因为 "access was denied"(duh,Micro$ucks,这就是我们要更改的内容!)。
这个权限错误发生在很多文件上,我用 Alt+C 快速点击 "Continue" 重复消息,但这仍然花费了太长时间,所以我取消了这个过程,导致这个警告消息弹出向上:
现在我无法将 TrustedInstaller 用户设置回 WindowsApps 文件夹的所有者,因为它没有显示在 Users/Groups/Built-in 安全 principles/Other 对象列表中。 *
*实际上,根据 this tutorial,您可以通过在对象名称文本框中键入 NT Service\TrustedInstaller
将所有者换回 TrustedInstaller。
解决方案
没有解决办法。基本上,我们完全搞砸了。优雅的举动,微软。
这似乎是 git-bash 中的限制。使用 winpty python.exe
的建议对我有用。有关更多信息,请参阅 Python not working in the command line of git bash。
节省您的时间:
使用 wsl and vscode remote extension
以正确使用 python 即使是 win10
别忘了 virtualenv
!
有用 https://linuxize.com/post/how-to-install-visual-studio-code-on-ubuntu-18-04/
最简单的做法是修改您的 PATH 和 PYTHONPATH 环境变量,以确保在本地 WindowsApp 文件夹之前搜索包含正确 python 二进制文件的文件夹。您可以通过打开控制面板并搜索 "env"
来访问环境变量
在 WindowsApps 解决问题之前添加本地 Python 路径。
这个问题太普遍了,不能一直存在。大多数答案和说明都无法解决这个问题。以下是 Windows 10 日的活动:
在开始搜索栏中输入environment variables
,然后打开编辑系统环境变量。
单击环境变量...
在“系统变量”部分,找到键为 Path
的变量并双击它。
查找指向 python 个文件的路径。可能有 none。如果有,select删除。
创建一个新变量设置为您的 python 可执行文件的路径。通常这是 C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Python38
。通过文件资源管理器检查来确保这一点。
注意:如果你看不到AppData
,那是因为你还没有enabled viewing of hidden items:点击查看选项卡并勾选隐藏项目复选框。
创建另一个指向 Scripts
目录的变量。通常是 C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Scripts
.
重新启动终端并尝试输入 py
、python
、python3
或 python.exe
.
解决方法:如果您已从 exe 安装 python,请按照以下步骤操作。
第 1 步:卸载 python
第 2 步:安装 python 并选中 Python 路径复选框,如下面的屏幕截图(黄色)中突出显示的那样。
这解决了我的问题。
这是由于 Windows 应用程序执行别名 在 Git-Bash.
中的工作方式
这是 MSYS2 failing to access Windows reparse points with IO_REPARSE_TAG_APPEXECLINK
中的一个已知问题
作为变通方法,您可以为在后台使用 cmd.exe
的函数调用设置别名。
将以下内容添加到您的 ~/.bashrc
文件中::
function python { cmd.exe /c "python ";}
对于 python,我建议只像接受的答案那样关闭应用程序执行别名,但对于通过 windows 商店专门分发的库,如 winget
,这是你最好的选择。
进一步阅读
对我来说,我尝试了 manage app execution aliases
并得到一个错误,即 python3 不是一个命令,所以为此,我使用 py
而不是 python3
并且它起作用了
我不知道为什么会这样,但它对我有用
我遇到了同样的问题,但除了 Python 被阻止外, Scripts
文件夹中的所有程序也被阻止。关于别名、路径和 winpty
的其他答案没有帮助。
我终于发现是我的防病毒软件 (Avast) 出于某种原因决定在一夜之间阻止所有已编译的 python 脚本。
幸运的是,修复很简单:只需将整个 Python 目录列入白名单即可。有关完整说明,请参阅 。
在环境变量中添加python文件夹路径即可
1.search环境变量
2.look 为系统变量部分,并在其中找到名为 path 的变量
3.double 单击路径并添加指向 python 文件夹的新路径,仅此而已。
python文件夹通常在
C:\Users["用户名"]\AppData\Local\Programs\Python\Python39
简单的回答:将python替换为PY一切都会按预期工作
我有这个 运行 /execute 但没有工作
python3 -m http.server 8080
阅读并尝试了上面的一些解决方案但没有奏效后,对我有用的是
python -m http.server 8080
对于来此问题的人想要使用 Python 的 Microsoft Store 版本,并且 "Manage app execution aliases" fix by @Zooba has likely happened, and are using Git for Windows git-bash(也称为 BASH 通过 msys2 mintty),解决方案很可能只是记住用 winpty
.'
进行调用
winpty python3
但是,如果系统有其他版本的 Python,请确保已删除这些副本(例如从 python.org) or are contained to their specific bundled application (e.g. OSGeo4W) (may require 安装的副本)。
为什么,忘记了winpty
,是不是权限错误?它第一次运行时,Microsoft Store 存根与 msys 可用的权限冲突。很多 详细介绍了正在发生的事情以及为什么感觉很奇怪。简短的回答是,存根试图成为 Microsoft Store 的便捷捷径。如果您使用 winpty
启动它,它就可以做到这一点。第一次之后,由于与 Microsoft Store 相关和无关的原因,它继续需要 winpty
。
在Windows10
- 打开控制面板
- 点击系统
- 点击高级系统设置link
- 单击环境变量按钮
- 在系统变量部分找到 PATH 环境变量和 select 它
- 点击编辑(如果PATH环境变量不存在,点击新建)
- 在Edit环境变量中window指定PATH环境变量的值
- 点击确定
- 通过单击“确定”关闭所有剩余 windows
- 重新打开命令提示符 window 和 运行
python --version
确保将 C:\Python39\
和 C:\Python39\Scripts\
添加到系统路径变量和用户路径变量中
似乎 Windows 10 的更新在一夜之间中断了 Python。只是尝试 运行 python --version
返回了 "Permission Denied" 错误。 None三个更新; KB4507453、KB4506991 或 KB4509096 看起来像是罪魁祸首,但问题出现的时间值得怀疑。我希望有一个更简单的修复方法,而不是搞乱回滚。
python的权限是“-rwxr-xr-x”,除了让Windows更新安装昨晚的补丁后重启机器外,我没有做任何更改。
根据系统信息,我运行宁10.0.18362
还应注意,无论我(尝试)使用 "run as administrator" 从 git-bash 执行 Python 与否,以及如果我尝试使用PowerShell,它只是打开 Windows 商店,就好像没有安装应用程序一样,所以我认为它出于某种原因看不到我的 /c/Users/david/AppData/Local/Microsoft/WindowsApps/
文件夹的内容。
我也曾尝试重新安装 Python 3.7.4,但这也无济于事。还有什么我应该看的吗?
这不是 PowerShell 的解决方案,但我遇到了同样的问题,但 MINGW64 除外。我通过切换到 Linux 的 Windows 子系统(我无论如何都想这样做)作为我的终端来绕过它,只是一般和 VSCode。这个post描述的很好:
How to configure VS Code (windows) to use Ubuntu App as terminal
总结:
1) 从 Windows App Store
安装 Ubuntu2) 从 CMD -> wslconfig /setdefault Ubuntu
更改默认值 bash--- 对于 VSCode
3) 重启VSCode
4) 在 VSCode 中将 "terminal.integrated.shell.windows" 更改为 "C:\WINDOWS\System32\bash.exe"(有关详细信息,请参阅上面的 post)
运行 现在在 VSCode 和 WSL 中顺利进行(Bash 在 Ubuntu 在 Windows 上)。可能至少是您的临时解决方案。
也许您可以尝试使用管理员权限打开命令提示符。 (运行 作为管理员)。大部分时间都为我工作。
据我所知,这是由于与最近添加到 Windows 商店的 Python 3.7 版本冲突引起的。看起来这在 %USERPROFILE%\AppData\Local\Microsoft\WindowsApps
文件夹中添加了两个名为 python.exe 和 python3.exe 的 "stubs",在我的例子中,这是在 before 中插入的] 我现有的 Python 可执行文件在 PATH
.
将此条目移到正确的 Python 文件夹下(部分)更正了该问题。
纠正它的第二部分是在 Windows 搜索提示中键入 manage app execution aliases
并完全禁用 Python 的商店版本。
有可能你只需要做第二部分,但在我的系统上我做了两个更改,现在一切都恢复正常了。
研究
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps
中的所有文件都是占位符,指向实际位于 C:\Program Files\WindowsApps
中某处的文件,恰好完全被拒绝了权限。
看来我在这个问题的副本中所做的陈述是正确的:
"Seems like they didn't really think about the distribution method screwing with permissions!"
来源:Cannot install pylint in Git Bash on Windows (Windows Store)
由于 WindowsApps 分发方法,权限被严重破坏:
有趣的是,尽管在 CMD 中执行 python
工作得很好,但 "WindowsApps" 文件夹在列出其所在目录中的文件并尝试导航到该文件夹时不会显示生成 "Permission denied" 错误:
尝试更改权限需要先更改所有者,所以我将所有者更改为管理员组。在那之后,我试图更改 Administrators 组的权限以包括完全控制,但无法更改此权限,因为 "access was denied"(duh,Micro$ucks,这就是我们要更改的内容!)。
这个权限错误发生在很多文件上,我用 Alt+C 快速点击 "Continue" 重复消息,但这仍然花费了太长时间,所以我取消了这个过程,导致这个警告消息弹出向上:
现在我无法将 TrustedInstaller 用户设置回 WindowsApps 文件夹的所有者,因为它没有显示在 Users/Groups/Built-in 安全 principles/Other 对象列表中。 *
*实际上,根据 this tutorial,您可以通过在对象名称文本框中键入 NT Service\TrustedInstaller
将所有者换回 TrustedInstaller。
解决方案
没有解决办法。基本上,我们完全搞砸了。优雅的举动,微软。
这似乎是 git-bash 中的限制。使用 winpty python.exe
的建议对我有用。有关更多信息,请参阅 Python not working in the command line of git bash。
节省您的时间:
使用 wsl and vscode remote extension
以正确使用 python 即使是 win10
别忘了 virtualenv
!
有用 https://linuxize.com/post/how-to-install-visual-studio-code-on-ubuntu-18-04/
最简单的做法是修改您的 PATH 和 PYTHONPATH 环境变量,以确保在本地 WindowsApp 文件夹之前搜索包含正确 python 二进制文件的文件夹。您可以通过打开控制面板并搜索 "env"
来访问环境变量在 WindowsApps 解决问题之前添加本地 Python 路径。
这个问题太普遍了,不能一直存在。大多数答案和说明都无法解决这个问题。以下是 Windows 10 日的活动:
在开始搜索栏中输入
environment variables
,然后打开编辑系统环境变量。单击环境变量...
在“系统变量”部分,找到键为
Path
的变量并双击它。查找指向 python 个文件的路径。可能有 none。如果有,select删除。
创建一个新变量设置为您的 python 可执行文件的路径。通常这是
C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Python38
。通过文件资源管理器检查来确保这一点。注意:如果你看不到
AppData
,那是因为你还没有enabled viewing of hidden items:点击查看选项卡并勾选隐藏项目复选框。创建另一个指向
Scripts
目录的变量。通常是C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Scripts
.重新启动终端并尝试输入
py
、python
、python3
或python.exe
.
解决方法:如果您已从 exe 安装 python,请按照以下步骤操作。
第 1 步:卸载 python
第 2 步:安装 python 并选中 Python 路径复选框,如下面的屏幕截图(黄色)中突出显示的那样。
这解决了我的问题。
这是由于 Windows 应用程序执行别名 在 Git-Bash.
中的工作方式这是 MSYS2 failing to access Windows reparse points with IO_REPARSE_TAG_APPEXECLINK
作为变通方法,您可以为在后台使用 cmd.exe
的函数调用设置别名。
将以下内容添加到您的 ~/.bashrc
文件中::
function python { cmd.exe /c "python ";}
对于 python,我建议只像接受的答案那样关闭应用程序执行别名,但对于通过 windows 商店专门分发的库,如 winget
,这是你最好的选择。
进一步阅读
对我来说,我尝试了 manage app execution aliases
并得到一个错误,即 python3 不是一个命令,所以为此,我使用 py
而不是 python3
并且它起作用了
我不知道为什么会这样,但它对我有用
我遇到了同样的问题,但除了 Python 被阻止外, Scripts
文件夹中的所有程序也被阻止。关于别名、路径和 winpty
的其他答案没有帮助。
我终于发现是我的防病毒软件 (Avast) 出于某种原因决定在一夜之间阻止所有已编译的 python 脚本。
幸运的是,修复很简单:只需将整个 Python 目录列入白名单即可。有关完整说明,请参阅
在环境变量中添加python文件夹路径即可
1.search环境变量
2.look 为系统变量部分,并在其中找到名为 path 的变量
3.double 单击路径并添加指向 python 文件夹的新路径,仅此而已。
python文件夹通常在 C:\Users["用户名"]\AppData\Local\Programs\Python\Python39
简单的回答:将python替换为PY一切都会按预期工作
我有这个 运行 /execute 但没有工作
python3 -m http.server 8080
阅读并尝试了上面的一些解决方案但没有奏效后,对我有用的是
python -m http.server 8080
对于来此问题的人想要使用 Python 的 Microsoft Store 版本,并且 winpty
.'
winpty python3
但是,如果系统有其他版本的 Python,请确保已删除这些副本(例如从 python.org) or are contained to their specific bundled application (e.g. OSGeo4W) (may require
为什么,忘记了winpty
,是不是权限错误?它第一次运行时,Microsoft Store 存根与 msys 可用的权限冲突。很多 winpty
启动它,它就可以做到这一点。第一次之后,由于与 Microsoft Store 相关和无关的原因,它继续需要 winpty
。
在Windows10
- 打开控制面板
- 点击系统
- 点击高级系统设置link
- 单击环境变量按钮
- 在系统变量部分找到 PATH 环境变量和 select 它
- 点击编辑(如果PATH环境变量不存在,点击新建)
- 在Edit环境变量中window指定PATH环境变量的值
- 点击确定
- 通过单击“确定”关闭所有剩余 windows
- 重新打开命令提示符 window 和 运行
python --version
确保将 C:\Python39\
和 C:\Python39\Scripts\
添加到系统路径变量和用户路径变量中