似乎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,但这也无济于事。还有什么我应该看的吗?
答案 0 :(得分:11)
此问题太普遍了,无法持续存在。而且大多数答案和说明都无法解决。在Windows 10上的操作如下:
在开始搜索栏中输入environment variables
,然后打开编辑系统环境变量。
单击环境变量...
在“系统变量”部分,用键Path
找到变量,然后双击它。
查找指向python文件的路径。可能没有。如果有,请选择并删除它们。
创建一个新变量,该变量设置为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
。
答案 1 :(得分:10)
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps
中的所有文件都是占位符,指向实际位于C:\Program Files\WindowsApps
中某处的文件,这些文件恰好被完全拒绝了权限。
我在重复此问题时所作的陈述似乎在正确的轨道上
“似乎他们并没有真正考虑过分配方法会被权限搞砸!”
来源:Cannot install pylint in Git Bash on Windows (Windows Store)
由于WindowsApps的分发方法,权限被浪费了:
有趣的是,“用户”组以及我的特定用户都可以读取和执行文件,但是出于某些不可思议的原因,“管理员”组只能列出文件夹内容。而且,当尝试在文件资源管理器中访问该文件夹时,它甚至拒绝显示该文件夹的内容,因此也有些麻烦。
有趣的是,即使在CMD中执行python
也能正常工作,但在其所在目录中列出文件时,“ WindowsApps”文件夹不会显示,并且尝试导航到该文件夹会产生“权限拒绝”错误:
尝试更改权限需要先更改所有者,因此我将所有者更改为Administrators组。此后,我尝试更改Administrators组的权限以包括“完全控制”权限,但是由于“拒绝访问”(du,Micro $ ucks,这就是我们要更改的权限),因此无法更改此权限。
这个权限错误发生在很多文件上,以至于我使用Alt + C在重复的消息上快速单击“继续”,但这仍然花费了太长时间,因此我取消了此过程,并弹出了以下警告消息:>
现在我无法将TrustedInstaller用户重新设置为WindowsApps文件夹的所有者,因为它没有显示在“用户/组/内置安全性原则/其他对象”列表中。 *
*实际上,根据this tutorial,您可以通过在对象名称文本框中键入NT Service\TrustedInstaller
来将所有者交换回TrustedInstaller。
没有解决方案。基本上,我们完全被搞砸了。微软的经典举动。
答案 2 :(得分:5)
简单的答案:用 PY 替换 python 一切都会按预期工作
答案 3 :(得分:4)
答案 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路径复选框。
这解决了我的问题。
答案 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 中
python --version