`

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...

    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 子...

    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系统上安装...

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

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

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

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

    使用python打包生成exe文件,win7 64位和32位均可运行

    使用python打包生成exe文件,win7 64位和32位均可运行 当前环境说明: win7 64位,已安装python3.6-64位版本 python3.6-64位环境变量已配置 问题:win7 64位打包成exe文件后,不能在32位系统运行 需求:...

    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 programming on win32

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

    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的新功能:...

    WIN7 支持的最高版本 Python 3.8.6 X64

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

    win10版本下python3.6配置opencv3.4库的方法

    ### Win10 版本下 Python 3.6 配置 OpenCV 3.4 库的方法 在本文中,我们将详细介绍如何在Windows 10操作系统上为Python 3.6环境配置OpenCV 3.4库。OpenCV(开源计算机视觉库)是一款广泛应用于图像处理、计算机视觉...

    python 打包后win7丢失api-ms-win-core-path无法启动

    标题 "python 打包后win7丢失api-ms-win-core-path无法启动" 描述了一个常见的问题,即使用Python打包工具(如PyInstaller)生成的可执行文件在Windows 7系统上运行时,可能会遇到“api-ms-win-core-path”缺失的...

    pycrypto-2.6.1-cp38-cp38-win32.whl python3.8_Win7_win10_win11

    安装PyCrypto 需要 单独安装VC 14.0,还要配置很多参数,很麻烦。在其他地方找不到whl ...32位+64位都在里面,支持window7和Windows10以及Windows11,win7,win10,win11的pycrypto wheel whl包下载!

Global site tag (gtag.js) - Google Analytics