为何py命令无法识别系统中全部Python版本?
问题描述
执行py -0时,输出仅显示:
-V:3.11 * Python 3.11 (Store)
但执行python -V时,输出为:
Python 3.10.10 | packaged by Anaconda, Inc. | (main, Mar 21 2023, 18:39:17) [MSC v.1916 64 bit (AMD64)] on win32
存在以下疑问:
- 为何
py命令无法识别其他已安装的Python版本?VS Code已检测到4个版本:
- CMD中执行
where命令的结果未包含Orange数据挖掘工具的Python路径:
where python C:\Users\ganuo\miniconda3\python.exe C:\Users\ganuo\AppData\Local\Microsoft\WindowsApps\python.exe C:\Program Files\Inkscape\bin\python.exe where python3 C:\Users\ganuo\AppData\Local\Microsoft\WindowsApps\python3.exe
原因及解决办法
一、py命令无法识别其他版本的原因与解决
py是Windows专属的Python启动器(py.exe),它识别版本的逻辑和普通python命令不一样:
- 它只会读取**官方Python安装程序(含Store版)**写入注册表的版本信息,路径为
HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore或HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore。 - Anaconda/Miniconda、Inkscape自带的Python属于自定义分发版或嵌入版,默认不会主动注册到上述注册表位置,所以
py命令扫不到。 - 而
python命令是按系统PATH环境变量的优先级调用,你的PATH里Miniconda的Python排在最前面,所以python -V显示的是3.10.10。
解决方式
手动注册非官方版本到
py启动器
打开管理员权限的CMD,执行以下命令(把路径替换为你实际的Python安装路径):# 注册Miniconda的Python 3.10 reg add HKCU\SOFTWARE\Python\PythonCore\3.10\InstallPath /v "" /t REG_SZ /d "C:\Users\ganuo\miniconda3" /f reg add HKCU\SOFTWARE\Python\PythonCore\3.10\InstallPath /v "ExecutablePath" /t REG_SZ /d "C:\Users\ganuo\miniconda3\python.exe" /f执行完成后再运行
py -0,就能看到3.10版本出现在列表里了。直接指定路径调用
不想改注册表的话,直接用完整路径调用对应版本的Python,比如C:\Program Files\Inkscape\bin\python.exe,也可以给常用版本创建快捷方式或DOS别名。
二、Orange的Python路径未被where找到的原因
Orange自带的Python是私有嵌入式版本,它不会将自身路径添加到系统PATH环境变量中,而where命令只会搜索PATH里的目录,所以找不到。
VS Code能检测到是因为它会主动扫描常见软件的安装目录(比如Orange安装路径下的Python子文件夹),如果需要调用Orange的Python,直接去Orange的安装目录里找,默认路径一般是C:\Program Files\Orange\Python\python.exe(根据你的实际安装位置调整)。
内容的提问来源于stack exchange,提问作者Ooker
相关产品推荐
相关产品推荐

