当前位置: 首页 > 科技观察

Windows10中使用Python时遇到的奇怪现象

时间:2023-03-12 19:11:32 科技观察

最近使用Python时出现了一个很奇怪的现象:命令行执行python.exe没有进入REPL,而且好像没有其他反应,稍等一下,你会看到WindowsStore页面弹出,找到PythonApp详情页面。这种现象让我有点困惑。本以为是Python运行环境的问题,但很快意识到应该是Windows导致的。查看路径是否正常,果然:\$wherepythonC:\\Users\\yuhao\\AppData\\Local\\Microsoft\\WindowsApps\\python.exe原理是系统创建了一个Python.exe本身。如果你从资源管理器打开上面的目录,你会看到这里只有几个.exe文件,而且图标也不正常。它不是一个真实完整的Python运行环境。那么问题来了,Windows在没有实际环境的情况下创建这些.exe的目的是什么?我从网上找了一些资料。事实证明,自Windows102019年5月更新以来,微软一直试图将Python引入Windows。至于具体的做法,已经把Python3放在自己的store里了。上面看到的python.exe是一个“假”Python。它唯一的作用就是在系统没有找到Python的时候自动跳转到微软商店供我们下载。以下是微软团队给出的说法:谁把Python放在了Windows10May2019Update中?可能是担心这个新功能会导致一些兼容性问题,微软在系统设置中加入了一个比较隐晦的功能。与其在级联的设置屏幕中找到它,不如直接输入appexec更容易:这将在设置中打开“应用程序别名”屏幕。这里我们会看到系统认为python.exe和python3.exe只是安装程序的别名,但我们也可以选择关闭它们。这样,当我们再次运行python时,就会出现“找不到程序”的标准提示。事实上,Windows偷偷将上述.exe文件备份到其他地方。很多程序员(包括我)很可能会按照标准的方式从官方下载安装Python可执行文件。如果在安装过程中选择了“添加到系统环境变量”,那么标准的Python会被注册到系统PATH变量中,上面提到的WindowsApps目录被Windows添加到用户PATH变量中。根据Windows系统的规则,PATH环境变量是在用户设置之前由系统设置的,所以如果安装的是标准版的Python,系统应该先找到它,而不是AppStore版的Python。后来发现我的机器出现上述问题的原因是系统设置有一些语法错误。我改正后再次测试,结果正常。至此,我们已经了解了Windows自带的Python是怎么回事。微软这样做的初衷应该是希望普通用户可以更方便地使用Python。这个想法无可厚非,但我还是有些怀疑将其放到WindowsAppStore的设计思路是否合理。毕竟微软AppStore一直口碑不好,内容少,功能少,速度慢,还时不时出现一些烦人的小问题(比如莫名其妙的0x8000xxxx错误)。对于“应用程序别名”功能是解决了问题还是带来了更多的困惑,我也持保留意见。当我在网上搜索有关此问题的信息时,我还发现其他用户也被此问题困扰,例如:[Bug]Don'tfindpythonlibraryfromWindowsAppsdirMicrosoftStoreinstalledpython(3.7-Windows10)basedvirtualenvs无法访问pydDLL目前在Windows上安装Python的方式有很多种:通过官网下载安装;通过Anaconda集成软件包;使用VisualStudio安装;管理像巧克力这样的第三方包;通过WSL版本的Python安装Linux;通过Windows应用商店安装;老实说,我认为太多不同的来源会使环境复杂化,增加出错的可能性,并且容易让初学者感到困惑。对于大多数程序员来说,建议大家以最基本的方式从官网下载并安装Python。