点击上方“编程派”,选择设为“设为星标”

优质文章,第一时间送达!

作者:流光飞舞

来源:https://shuhari.dev/blog/2019/11/win10-store-python

最近在使用 Python 的时候发生了很奇怪的现象:从命令行执行 python.exe 并不会进入 REPL,似乎也没有其他反应,然而稍等片刻,会看到系统弹出 Windows Store 页面,并定位到 Python App 的详情页。


这个现象让我很是迷惑了一下,还以为是 Python 运行环境出了什么状况,但很快反应过来,从现象看,应该是 Windows 搞的鬼。

检查一下路径是否正常,果然:

\$ where pythonC:\\Users\\yuhao\\AppData\\Local\\Microsoft\\WindowsApps\\python.exe

原理是系统自己搞了一个 Python.exe。如果从在资源管理器打开上述目录的话,会看到这里只有孤零零的几个 .exe 文件,且图标也不正常,并不是一个真正的、完整的 Python 运行环境。


那么问题来了,Windows 搞这些没有实际环境的 .exe 出来,用意何在?

从网上找到一些信息,原来从 Windows 10 2019 五月更新以来,微软试图把 Python 带到 Windows,至于具体做法,则是把 Python3 放到了自家的商店里面。而上面看到的 python.exe 是一个“假的” Python,它的唯一作用在于当系统没有找到 Python 的时候,自动跳转到微软商店去让我们下载。

以下是微软团队给出的说法:Who put Python in the Windows 10 May 2019 Update?

可能是担心这个新的功能导致一些兼容性方面的结果,微软又在系统设置里面添加了一个比较隐晦的功能。比起在层层叠叠的设置界面里找到它,更简单的方法是直接输入 app exec


这样会打开设置的“应用程序别名”界面。这里我们会看到系统认为 python.exepython3.exe 都只是安装程序的别称,不过我们也可以选择把它们关闭。这样当我们再运行 python 的时候,就会显示“找不到程序”的标准提示。实际上,Windows 是把上述 .exe 文件偷偷备份到其他地方了。


很多程序员(包括我)很可能都是按照标准的方式从官方下载安装 Python 执行文件。如果在安装过程中选择了“添加到系统环境变量”的话,那么标准 Python 会注册到系统 PATH 变量,而前面所述的 WindowsApps 目录则是 Windows 添加到用户 PATH 变量的。按照 Windows 系统的规则,PATH 环境变量是系统设置先于用户设置,所以如果安装了标准版 Python 的话,系统应该首先找到的是它,而不是应用商店版的 Python。后来我发现,之所以我的机器会出现上述问题,是因为系统设置有一点语法错误,修正以后再次测试,结果就正常了。

到此,我们已经理解了 Windows 自带的 Python 是怎么回事。微软这样做的初衷,应该是希望普通用户能更方便地用上 Python,这个想法无可厚非,但放到 Windows 应用商店这个设计思路是否合理,我还是有一些怀疑的。毕竟微软应用商店一直以来名声并不算太好,内容少、功能欠缺、速度慢,时不时发生一些恼人的小问题(比如 不知所云的 0x8000xxxx 错误)。而“应用程序别名”这个功能到底是解决了问题还是带来更多的困惑,我也持保留意见。

当我在网上查找关于该问题的信息时,也发现有其他用户同样受到该问题的困扰,比如:

  • [Bug] Don't find python library from WindowsApps dir
  • Microsoft Store installed python (3.7 - Windows 10) based virtualenvs cannot access pyd DLLs

目前,在 Windows 上面安装 Python 已经有很多不同的方式:

  • 通过官方网站下载安装;
  • 通过 Anaconda 集成软件包;
  • Visual Studio 一起安装;
  • 通过 chocolatey 之类的第三方包管理;
  • 通过 WSL 安装 Linux 版 Python;
  • 通过 Windows Store 安装;

说实话,我认为太多不同的来源渠道会让环境问题变得更复杂,增加出错的可能,并且容易迷惑初学者。对于大多数程序员来说,建议大家还是按照最基本的方式,从官方下载并安装 Python。

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版

回复关键词「m」,立即获取Python精选优质文章合集

回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~

题图:pexels,CC0 授权。

好文章,我在看❤️

输入python出现商店_Win 10 中使用 Python 碰到的奇怪现象相关推荐

  1. python关闭exe程序_Win 10 中使用 Python 碰到的奇怪现象

    优质文章,第一时间送达! 作者:流光飞舞 来源:https://shuhari.dev/blog/2019/11/win10-store-python 最近在使用 Python 的时候发生了很奇怪的现 ...

  2. latex附录中放python代码_在Latex中插入Python代码

    这里指的插入是指最终能在生成的pdf中显示高亮的Python代码. 在Latex中插入Python代码,需要一个第三发的宏包pythonhighlight: https://github.com/ol ...

  3. win10运行python 速度慢_Win 10 使用 Python遇到奇怪的问题

    最近在使用 Python 的时候发生了很奇怪的现象:从命令行执行python.exe并不会进入 REPL,似乎也没有其他反应,然而稍等片刻,会看到系统弹出 Windows Store 页面,并定位到 ...

  4. 如何在 PyFlink 1.10 中自定义 Python UDF?

    我们知道 PyFlink 是在 Apache Flink 1.9 版新增的,那么在 Apache Flink 1.10 中 Python UDF 功能支持的速度是否能够满足用户的急切需求呢? Pyth ...

  5. win10怎么激活python_无法在Windows 10中激活Python venv

    这条线很旧,但我今天遇到了同样的问题,找到了一个可行的答案.我已经使用Python3.6VenV几个月了,现在没有问题,但是今天我遇到了一个新的错误消息:C:\test>python -m ve ...

  6. python基础语法第10关作业-Python基础语法习题一

    Part 1 习题 1.简述编译型与解释型语言的区别,且分别列出你知道的哪些语言属于编译型,哪些属于解释型2.执行 Python 脚本的两种方式是什么3.Pyhton 单行注释和多行注释分别用什么?4 ...

  7. 怎么保存python制作的饼图_Scribus中的Python脚本:制作饼图

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. Scribus是一个强大的开源页面布局应用程序,它是由开源社区自2001年开发的程序.据项目网站可知,Sc ...

  8. python画饼图程序_Scribus中的Python脚本:制作饼图

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. Scribus是一个强大的开源页面布局应用程序,它是由开源社区自2001年开发的程序.据项目网站可知,Sc ...

  9. Python简介以及在网站中运行Python

    文章目录 一.Python的优点 1.简单易学,属于高级语言 2.是一种解释型的语言 解释型语言 编译型语言 3.具有可移植性 4.丰富的库 5.面向对象 6.免费开源 二.Python的一些弱点 1 ...

最新文章

  1. Acwing第 19 场周赛【完结】
  2. 【Greenplum异常】数据库报错 could not create temporary file No space left on device(求解决)
  3. PWN-PRACTICE-BUUCTF-21
  4. R 学习 - 富集分析泡泡图回应
  5. ajax post提交到SpringMVC的Controller并将处理结果传递到前台输出总结(1)
  6. HDU2026 首字母变大写【文本处理】
  7. Java 泛型 (generics) 的使用
  8. Struts2 注解
  9. 灵悟礼品网上专卖店Sprint计划
  10. matlab simulink节点,ROS与Matlab语言入门教程-从Simulink中创建单独的ROS节点
  11. 模板字符串+JS模板引擎+vue,三者之间的字符串比较
  12. 易地推拓客分享:内容获客是最稳定的获客方式之一
  13. 水星怎么设置网速最快_wifi怎样设置网速最快
  14. padstack editor制作过孔
  15. H5版仿制微信跳一跳小游戏,网页版仿微信跳一跳小游戏源码,实现了跳一跳的基本核心功能
  16. lc用U盘更新固件_普通U盘和固态U盘相差多少?用下aigo固态U盘就知道了
  17. 无法打开文件“.lib”
  18. 百度API实现地图标点并测距
  19. springboot集成mybatis 使用逆向工程 生成sql语句
  20. 原创 | 正式商用一周年,5G给我们生活带来了什么变化?

热门文章

  1. 【C语言】利用递归函数求n的阶乘
  2. “Abp.AbpException: Unknown filter name: MayHaveTenant. Be sure this filter is registered before.”的解决
  3. JavaScript使用正则表达式进行邮箱表单验证实例
  4. 简易自动电阻测试仪_开始自动测试您的网站的简单方法
  5. react 组件名称重复_设计可重复使用的React组件
  6. dma和通道的区别_STM32 定时器触发 ADC 多通道采集,DMA搬运至内存
  7. matlab中 s 函数简记
  8. 力扣-复制带随机指针的链表
  9. 探索 Python + HyperLPR 进行车牌识别
  10. 关联规则应用场景实例十则