混乱的windows python环境

问题现象

不同的cmd入口指向的python也不同

xyplore.exe文件管理器的在当前位置打开终端按钮进入cmd终端

 Microsoft Windows [版本 10.0.19044.6093]
  (c) Microsoft Corporation。保留所有权利。
  C:\>where python
  C:\Users\cat\AppData\Local\Microsoft\WindowsApps\python.exe
  D:\codePython\python\official\Python3810\python.exe
  C:\>python
  C:\>where py
  C:\Windows\py.exe

 window的cmd.exe 执行后进cmd终端

Microsoft Windows [版本 10.0.19044.6093]
(c) Microsoft Corporation。保留所有权利。
C:\windows\system32>where python
C:\Users\cat\AppData\Local\Microsoft\WindowsApps\python.exe
D:\codePython\python\official\Python3810\python.exe
C:\windows\system32>where py
C:\Windows\py.exe
C:\windows\system32>

window的powershell执行后进ps终端看到的python

Windows PowerShell
版权所有 (C) Microsoft Corporation。保留所有权利。
尝试新的跨平台 PowerShell https://aka.ms/pscore6
加载个人及系统配置文件用了 2154 毫秒。
(miniconda3)PS C:\windows\system32> where python
(miniconda3)PS C:\windows\system32> where py
(miniconda3)PS C:\windows\system32>

如何统一他们为D:\codePython\python\official\Python3810\python.exe

grok分析

你的问题很典型:不同终端(CMD、PowerShell、第三方文件管理器终端)加载的环境变量顺序或范围不同,导致 where python 显示的优先级不一样,甚至有些完全找不到你的 Python。

主要原因:

  • WindowsApps 的 python.exe 别名 优先级很高,很多终端会先看到它。
  • PowerShell 被 Miniconda 接管(显示 (miniconda3) 虚拟环境),它有自己的 PATH 设置,屏蔽了系统 PATH 中的 Python。
  • xyplorer(或其他文件管理器)的终端 可能以普通用户权限启动,或加载了不同的环境变量配置文件。
  • 普通 CMD 有时从 System32 启动,也会先看到 WindowsApps。

解决

  • 如何干掉微软商店的python:设置>应用>应用和功能>应用执行别名>python和python3的开关都关掉
  • 如何覆盖微软system下的py:环境变量增加PY_PYTHON,值为你安装python的大版本号,比如3.8
  • 如何暴露你的安装的python:环境变量Path,值增加两行你安装的python路径D:\codePython\python\official\Python3810\和D:\codePython\python\official\Python3810\Scripts\,移到最上面