问题现象
不同的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.exewindow的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.exegrok分析
你的问题很典型:不同终端(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\,移到最上面