`

Win 10 中使用 Python 碰到的奇怪现象

阅读更多

本文作者:流光飞舞,来源:https://shuhari.dev/blog/2019/11/win10-store-python

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

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

\$ where python
C:\\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.exe 和 python3.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。

逆锋起笔是一个专注于程序员圈子的技术平台,你可以收获最新技术动态最新内测资格BAT等大厂的经验精品学习资料职业路线副业思维,微信搜索逆锋起笔关注!

分享到:
评论

相关推荐

    Pythonwin win32 for Python3.0

    标签中的"python win 32 IDE"表明这个库主要关注的是在Windows平台上使用Python进行开发,特别是对于那些需要利用Windows特性的应用。它不仅是一个IDE,更是一个全面的工具集,包含了一系列的模块,如win32api、win...

    triton在win10的python3.10环境使用正常

    描述中提到的 "triton在win10的python3.10环境使用正常" 表明Triton已经被成功安装并且能够在最新版的Python解释器(Python 3.10)上运行,这对于那些依赖最新Python特性的应用开发者来说是个好消息。Windows 10上的...

    Win10_Python环境安装包全套

    本套"Win10_Python环境安装包全套"针对Windows 10用户提供了全面的Python开发环境搭建资源,包括Python解释器、集成开发环境(IDE)PyCharm以及详细的环境搭建指南。 首先,我们来详细了解Python-3.9.6-amd64安装包...

    win10_python3和Python2共存配置方法

    ### Win10中Python3与Python2共存配置方法 #### 概述 在Windows 10操作系统下,为了满足不同项目的需求,有时我们需要同时安装并使用Python2和Python3两个版本。本文将详细介绍如何在Win10系统上实现Python2和...

    win10内置Linux运用python进行远程连接

    在本文中,我们将详细介绍如何在 Win10 中启用内置 Linux,并使用 Python 进行远程连接。 一、启用 Win10 内置 Linux 要启用 Win10 内置 Linux,需要在系统的“程序和功能”中开启“适用于 Linux 的 Windows 子...

    python programming on win32

    12-21章是关于在Windows环境中使用Python进行更高级任务的实践章节,包括COM的深入应用、数据库操作、电子邮件处理、互联网协议、NT管理、进程与文件、NT服务、通信、GUI开发、Active Scripting、C++和Delphi中的...

    Win7 可用python最高版本v3.8.10

    在Windows 7中使用Python: 1. 在命令行中直接输入Python命令,进入交互模式,可以进行简单的代码测试和学习。 2. 编写`.py`脚本文件,然后通过`python script.py`执行。 3. 利用IDE进行项目开发,IDE会自动处理...

    win7解决python打包EXE不能运行升级包.rar

    如果Python脚本中使用了第三方库,需要确保这些库在打包时也被正确地包含进去。此外,考虑到Windows 7系统已经停止了官方支持,因此在打包时,应尽可能地测试在各种不同的操作系统环境中,尤其是较旧的系统版本,以...

    win10系统python3.6.4安装教程

    ### Win10系统Python 3.6.4安装教程 #### 一、前言 随着Python语言在数据科学、Web开发、自动化运维等领域的广泛应用,掌握Python环境的搭建成为每位开发者的基本技能之一。本文将详细介绍如何在Win10系统上安装...

    win10+python下用命令行打开摄像头并拍照的方法.py

    win10下使用命令行自动打开摄像头并拍照,用python实现的一个脚本。做自功化测试的时候很好用。缺点是单一任务,运行时一定摄像头要在前端。

    Python 3.10 下载 (含兼容win7补丁)

    由于Python官方原因, Python.3.10无法在win8以下系统(包括win7)中运行, 这是我整理的兼容win7的Python 3.10版本。本安装包还提供了一些工具和补丁, 帮助python兼容win7系统。 经测试, 本Python.3.10支持运行IDLE, ...

    python打包程序win7 win10下运行丢失api-ms-win-crt-runtime-l1-1-0.dll的解决方法

    标题中的问题涉及到的是Python程序在不同Windows系统之间运行兼容性的问题,特别是当使用pyinstaller进行打包后,在Win7系统上运行时出现“计算机丢失api-ms-win-crt-runtime-l1-1-0.dll”的错误。这个问题的根源...

    Python 3.10 下载 (含兼容win7补丁) (第2版)

    由于Python官方原因, Python.3.10无法在win8以下系统(包括win7)中运行, 这是我整理的兼容win7的Python 3.10版本。本安装包还提供了一些工具和补丁, 帮助python兼容win7系统。 经测试, 本Python.3.10支持运行IDLE, ...

    Python 3.10 下载 (含兼容win7补丁)(32位版本)

    由于Python官方原因, Python.3.10无法在win8以下系统(包括win7)中运行, 这是我整理的兼容win7的Python 3.10版本。本安装包还提供了一些工具和补丁, 帮助python兼容win7系统。 经测试, 本Python.3.10支持运行IDLE, ...

    WIN7 支持的最高版本 Python 3.8.6 X64

    在Windows 7操作系统中,Python的使用受到了特定版本的限制。标题提到的"WIN7 支持的最高版本 Python 3.8.6 X64"意味着在Windows 7上,用户可以安装并运行的最新Python版本是3.8.6,而且这个版本是为64位(X64)系统...

    Python 3.9 下载 (含兼容win7补丁) (32位)

    众所周知, Python.3.9无法在win8以下系统(包括win7)中运行, 这是我整理的兼容win7的Python 3.9.4版本。本安装包还提供了一些工具和补丁, 帮助python兼容win7系统。 经测试, 本Python.3.9支持运行IDLE, 支持使用pip...

    opencv_python-4.1.2-cp35-cp35m-win_amd64 python包

    opencv_python-4.1.2-cp35-cp35m-win_amd64 python包 opencv_python-4.1.2-cp35-cp35m-win_amd64 python包 opencv_python-4.1.2-cp35-cp35m-win_amd64 python包 opencv_python-4.1.2-cp35-cp35m-win_amd64 python包 ...

    skeletons-win-403-python-3.7.6.zip

    skeletons-win-403-python-3.7.6.zipskeletons-win-403-python-3.7.6.zipskeletons-win-403-python-3.7.6.zipskeletons-win-403-python-3.7.6.zipskeletons-win-403-python-3.7.6.zipskeletons-win-403-python-3.7.6...

    Python 3.9 下载 (含兼容win7补丁)

    Python.3.9无法在win8以下系统中运行, 这是我整理的提供兼容win7补丁的Python 3.9版本。经测试, 本Python.3.9支持运行IDLE, 支持使用pip安装、运行pygame等库, 功能完备。本python为64位版本。 Python 3.9的新功能:...

    解决python中导入win32com.client出错的问题

    - 如果是在Anaconda环境中使用,可以考虑使用`conda install -c anaconda pywin32`命令来进行安装。 - 当使用Python的虚拟环境时,确保所有的操作(包括安装和测试)都在该虚拟环境中完成。 #### 结论 本文详细...

Global site tag (gtag.js) - Google Analytics