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

时间:2019-07-10 16:23:38

标签: python windows

似乎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,但这也无济于事。还有什么我应该看的吗?

19 个答案:

答案 0 :(得分:11)

此问题太普遍了,无法持续存在。而且大多数答案和说明都无法解决。在Windows 10上的操作如下:

  1. 在开始搜索栏中输入environment variables,然后打开编辑系统环境变量

  2. 单击环境变量...

  3. 在“系统变量”部分,用键Path找到变量,然后双击它。

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

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

    注意:如果看不到AppData,是因为您没有enabled viewing of hidden items:单击“查看”标签,然后选中“隐藏的项目”复选框。

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

  7. 重新启动终端,然后尝试键入pypythonpython3python.exe

答案 1 :(得分:10)

研究

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

我在重复此问题时所作的陈述似乎在正确的轨道上

  

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

来源:Cannot install pylint in Git Bash on Windows (Windows Store)

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

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

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

enter image description here

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

enter image description here

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

enter image description here

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

enter image description here

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

解决方案

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

答案 2 :(得分:5)

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

答案 3 :(得分:4)

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

Environment Variables > Path

Bash Python --Version

答案 4 :(得分:3)

这似乎是git-bash中的限制。使用winpty python.exe的建议对我有用。有关其他信息,请参见Python not working in the command line of git bash

答案 5 :(得分:1)

据我所知,这是由于与Windows Store中最近添加的Python 3.7版本发生冲突所致。看起来好像在%USERPROFILE%\AppData\Local\Microsoft\WindowsApps文件夹中添加了两个名为python.exe和python3.exe的“存根”,在我的情况下,它是在之前插入{ {1}}。

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

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

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

答案 6 :(得分:1)

对于遇到此问题的人想要使用 Microsoft Store 版本的 Python,并且在 related@Zooba“管理应用执行别名”修复可能已经发生之后,并且正在使用 Git for Windows git-bash(通过 msys2 mintty 也称为 BASH),解决方案很可能只是记住使用 winpty 进行调用。'

winpty python3

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

为什么,如果 winpty 被忘记了,是不是权限错误?首次运行时,Microsoft Store 存根与 msys 可用的权限发生冲突。很多 re-ordering environment variables 都详细介绍了正在发生的事情以及为什么感觉很奇怪。简短的回答是,存根试图成为 Microsoft Store 的便捷捷径。如果您使用 winpty 启动它,它可以做到这一点。在第一次之后,由于与 Microsoft Store 相关和无关的原因,它继续需要 winpty

还有其他答案暗示 winpty,但他们的推理是无关的、错误的或过时的。我觉得 2021 年的更新摘要可能会有用。

答案 7 :(得分:1)

最简单的方法是修改PATH和PYTHONPATH环境变量,以确保在本地WindowsApp文件夹中搜索包含正确的python二进制文件的文件夹。您可以通过打开控制面板并搜索“ env”来访问环境变量

答案 8 :(得分:1)

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

第1步:卸载python

第2步:安装python并选中以下screentshot(黄色)中突出显示的Python路径复选框。

这解决了我的问题。

enter image description here

答案 9 :(得分:1)

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

这是 MSYS2 failing to access Windows reparse points with IO_REPARSE_TAG_APPEXECLINK

中的一个已知问题

一种解决方法,您可以将别名用作使用cmd.exe的函数调用。

将以下内容添加到您的~/.bashrc文件中::

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

对于python,我建议仅按照已接受的答案切换应用程序执行别名,但是对于仅通过Windows存储(例如winget)分发的库,这是您的最佳选择。

进一步阅读

答案 10 :(得分:1)

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

python3 -m http.server 8080

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

python -m http.server 8080

答案 11 :(得分:0)

确保将 format(zoo::as.yearqtr(gdp_fecha$Quarters), '%Y-Q%q') [1] "2000-Q1" "2000-Q2" "2000-Q3" "2000-Q4" "2001-Q1" "2001-Q2" "2001-Q3" "2001-Q4" "2002-Q1" "2002-Q2" "2002-Q3" "2002-Q4" "2003-Q1" "2003-Q2" "2003-Q3" "2003-Q4" "2004-Q1" "2004-Q2" [19] "2004-Q3" "2004-Q4" "2005-Q1" "2005-Q2" "2005-Q3" "2005-Q4" "2006-Q1" "2006-Q2" "2006-Q3" "2006-Q4" "2007-Q1" "2007-Q2" "2007-Q3" "2007-Q4" "2008-Q1" "2008-Q2" "2008-Q3" "2008-Q4" [37] "2009-Q1" "2009-Q2" "2009-Q3" "2009-Q4" "2010-Q1" "2010-Q2" "2010-Q3" "2010-Q4" "2011-Q1" "2011-Q2" "2011-Q3" "2011-Q4" "2012-Q1" "2012-Q2" "2012-Q3" "2012-Q4" "2013-Q1" "2013-Q2" [55] "2013-Q3" "2013-Q4" "2014-Q1" "2014-Q2" "2014-Q3" "2014-Q4" "2015-Q1" "2015-Q2" "2015-Q3" "2015-Q4" "2016-Q1" "2016-Q2" "2016-Q3" "2016-Q4" "2017-Q1" "2017-Q2" "2017-Q3" "2017-Q4" [73] "2018-Q1" "2018-Q2" "2018-Q3" "2018-Q4" "2019-Q1" "2019-Q2" "2019-Q3" "2019-Q4" "2020-Q1" "2020-Q2" "2020-Q3" C:\Python39\ 添加到系统路径变量和用户路径变量中

答案 12 :(得分:0)

这不是使用PowerShell的解决方案,但是除了MINGW64之外,我遇到了同样的问题。我通过切换到Ubuntu(无论如何我想这样做)作为我的终端来解决这个问题,通常是在VSCode中进行。这篇文章很好地描述了它:

How to configure VS Code (windows) to use Ubuntu App as terminal

总结:

1)从Windows App Store安装Ubuntu

2)从CMD更改默认bash-> wslconfig / setdefault Ubuntu

---对于VSCode

3)重新启动VSCode

4)在VSCode中,将“ terminal.integrated.shell.windows”更改为“ C:\ WINDOWS \ System32 \ bash.exe”(有关更多详细信息,请参见上文)

现在在Ubuntu上的VSCode和Bash中可以平稳运行。至少可能对您来说是一个临时解决方案。

答案 13 :(得分:0)

在环境变量中添加python文件夹的路径就可以了

1.搜索环境变量

2.查找系统变量部分并在其中找到名为path的变量

3.双击路径并添加指向python文件夹的新路径,就是这样。

python文件夹通常在 C:\Users["用户名"]\AppData\Local\Programs\Python\Python39

答案 14 :(得分:0)

我遇到了同样的问题,但除了 Python 被阻止之外,Scripts 文件夹中的所有程序也被阻止。关于别名、路径和 winpty 的其他答案没有帮助。

我终于发现是我的杀毒软件 (Avast) 出于某种原因在一夜之间决定阻止所有已编译的 Python 脚本。

幸运的是,修复很简单:只需将整个 Python 目录列入白名单即可。有关完整说明,请参阅 here

答案 15 :(得分:0)

对我来说,我尝试manage app execution aliases并得到一个错误,指出python3不是命令,因此,我使用py而不是python3并成功

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

答案 16 :(得分:0)

也许您可以尝试使用管理员权限打开命令提示符。 (以管理员身份运行)。大多数时候对我有用。

答案 17 :(得分:-1)

为您节省时间: 使用wsl and vscode remote extension甚至在win10上也可以正确使用python 并且不要忘记virtualenv! 有用的https://linuxize.com/post/how-to-install-visual-studio-code-on-ubuntu-18-04/

答案 18 :(得分:-1)

在 Windows 10 中

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