试图在Windows 10上运行Python的“权限被拒绝”

not*_*ber 13 windows file-permissions python-3.x git-bash windows-store-apps

Windows 10上的更新似乎在一夜之间破坏了Python。仅尝试运行会python --version返回“权限被拒绝”错误。三个更新都没有;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,但这也无济于事。还有什么我应该看的吗?

not*_*ber 31

据我所知,这是由于与Windows Store中最近添加的Python 3.7版本发生冲突所致。它看起来像叫python.exe和python3.exe到这增加了两个“存根” %USERPROFILE%\AppData\Local\Microsoft\WindowsApps文件夹,在我的情况,这是插入之前在我现有的Python可执行程序的入口PATH

将此条目移到正确的Python文件夹下面(部分地)可以解决此问题。

纠正它的第二部分是在Windows搜索提示中键入“管理应用程序执行别名”,并完全禁用Python的商店版本。

您可能只需要做第二部分,但是在我的系统上,我做了两个更改,现在一切都恢复了正常。

  • (这里是Microsoft员工和CPython核心开发人员)您绝对只需要执行第二部分。有一些与升级应用程序重置别名有关的错误,这些错误将在下一个稳定更新中修复,因此届时应该是一次性修复。在获取内部人员更新时,您可能需要再做几次。 (10认同)
  • 对我来说,我还必须将 python 添加到我的路径 (C:\Users\YourUsernameHere\AppData\Local\Programs\Python\Python37) 以便 git bash 找到 python (7认同)
  • 我只需要到第二部分来为我解决这个问题。 (5认同)
  • 另外,“访问被拒绝”问题是Git Bash错误(或维护其Bash端口的人……我不确定自己是谁)。启动应用商店是一项新功能,可以帮助人们安装Python-如果您使用常规安装程序将其添加到PATH中,则它应优先于新的重定向器,但如果没有,您会发现如何禁用它。 (3认同)
  • 将其添加到我的路径中并将其移动到顶部是我的解决方案,就像尼尔斯所做的那样。事实上,我不能只重命名 Windows 商店存根的存根,这一点非常烦人。 (2认同)
  • 完全是浪费人类的时间。无论是哪一方密谋造成这种情况,都需要认真考虑他们的职业选择。感谢您的修复 (2认同)

小智 20

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


Jai*_*Jai 18

这个问题太常见了,无法持续存在。大多数答案和说明都没有解决这个问题。以下是在 Windows 10 上的操作:

  1. environment variables在开始搜索栏中键入,然后打开Edit the System Environment Variables

  2. 单击环境变量...

  3. 在 System Variables 部分,使用 键找到变量Path并双击它。

  4. 查找指向 python 文件的路径。可能没有。如果有,请选择并删除它们。

  5. 创建一个新变量,设置为 python 可执行文件的路径。通常这是C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Python38. 通过文件资源管理器检查来确保这一点。

    注意:如果您看不到AppData,那是因为您没有启用查看隐藏项目:单击查看选项卡并勾选隐藏项目复选框。

  6. 创建另一个指向Scripts目录的变量。通常是C:\Users\[YOUR USERNAME HERE]\AppData\Local\Programs\Python\Scripts

  7. 重新启动终端,并尝试打字pypythonpython3,或python.exe


Sha*_*eel 11

解决方法:如果您已经从 exe 安装了 python,请按照以下步骤操作。

第一步:卸载python

第 2 步:安装 python 并检查 Python 路径复选框,如下面的屏幕截图(黄色)中突出显示。

这解决了我的问题。

在此处输入图片说明


Kev*_*vin 8

对于想要使用 Microsoft Store版本的 Python的人来说,在@Zooba进行相关的“管理应用程序执行别名”修复后,并且正在使用Git for Windows git-bash(也称为通过 msys2 的 BASH) mintty),解决方案很可能只是记住用 . ' 进行调用。winpty

winpty python3
Run Code Online (Sandbox Code Playgroud)

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

为什么如果winpty忘记了,是权限错误吗?首次运行时,Microsoft Store 存根与 msys 可用的权限发生冲突。许多其他答案都详细介绍了正在发生的事情以及为什么感觉很奇怪。简而言之,存根试图成为通往 Microsoft Store 的便捷捷径。如果您使用 启动它winpty,它就可以做到这一点。第一次之后,winpty由于与 Microsoft Store 相关和不相关的原因,它仍然需要 Microsoft Store。


Rya*_*yan 7

研究

中的所有文件%USERPROFILE%\AppData\Local\Microsoft\WindowsApps都是占位符,它们指向实际位于中的某个位置的文件,而这些文件C:\Program Files\WindowsApps恰好被完全拒绝了权限。

重复出现此问题后,我的陈述似乎正确无误:

“似乎他们没有真正考虑过分配方法会被权限搞砸!”

来源:无法在Windows上的Git Bash中安装pylint(Windows应用商店)

由于WindowsApps分发方法,权限被浪费了很多:

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 有趣的是,“用户”组以及我的特定用户都可以读取和执行文件,但是出于某些不可思议的原因,“管理员”组只能列出文件夹内容。当尝试在文件资源管理器中访问该文件夹时,它甚至拒绝显示该文件夹的内容,因此也有些麻烦。

有趣的是,即使python在CMD中执行工作也很好,但在其所在目录中列出文件时,“ WindowsApps”文件夹不会出现,并且尝试导航到该文件夹​​时会产生“权限被拒绝”错误:

在此处输入图片说明

尝试更改权限需要先更改所有者,因此我将所有者更改为Administrators组。此后,我尝试更改Administrators组的权限以包括“完全控制”权限,但是由于“拒绝访问”(du,Micro $ ucks,这就是我们要更改的权限),因此无法更改此权限。

在此处输入图片说明

这个权限错误发生在太多文件上,以至于我使用Alt + C在重复消息上快速单击“继续”,但这仍然花费了太长时间,因此我取消了此过程,从而弹出了以下警告消息:

在此处输入图片说明

现在,我无法将TrustedInstaller用户重新设置为WindowsApps文件夹的所有者,因为它没有显示在“用户/组/内置安全性原则/其他对象”列表中。*

在此处输入图片说明

*实际上,根据本教程,您可以通过NT Service\TrustedInstaller在对象名称文本框中输入内容来将所有者交换回TrustedInstaller 。

没有解决办法。基本上,我们完全被搞砸了。微软的经典举动。

  • (此处为Microsoft员工和CPython核心开发人员)现在我正在修复Windows中的一个错误,您可以在Windows中修复该错误,您可以在此位置启动可执行文件,但前提是启用了全局别名(在“管理应用程序执行”别名中)。我正在尝试更改它,以便您只需要为当前用户安装该应用程序。 (5认同)
  • 我们可以通过此对话框读取权限,因为它是由dllhost.exe实例(托管安全外壳扩展名rshx32.dll)拥有的,该实例正在以管理员权限运行,因此具有“列表文件夹内容”访问权限(即执行,同步和读取)数据,属性和权限)。用户组的条目不适用于常规访问检查。这取决于是否存在WIN:// SYSAPPID安全属性,即任何应用程序。每个应用程序的子文件夹都向用户授予读取访问权限,但是执行访问权限是通过设置了自定义访问令牌的应用程序链接运行的条件。 (2认同)

小智 7

在 WindowsApps 解决问题之前添加本地 Python 路径。

环境变量 > 路径

Bash Python --Version


小智 7

简单的答案:用PY替换python一切都会按预期工作

  • 任何人都可以添加更多关于“PY”是什么的上下文吗? (6认同)

小智 5

这不是 PowerShell 的解决方案,但除了 MINGW64 外,我遇到了同样的问题。我通过切换到适用于 Linux 的 Windows 子系统(无论如何我都想做)作为我的终端来解决这个问题,只是一般情况下和在 VSCode 中。这篇文章很好地描述了它:

如何配置 VS Code (windows) 以使用 Ubuntu App 作为终端

总之:

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”(更多详细信息请参见上面的帖子)

现在可以在 VSCode 和 WSL(Windows 上的 Ubuntu 上的 Bash)中顺利运行。可能至少是您的临时解决方案。


Aru*_*run 5

对我来说,我尝试manage app execution aliases并得到一个错误,python3 不是命令,因此,我使用了py而不是python3并且它起作用了

我不知道为什么会这样,但它对我有用