记录一个解决的问题
首先,在win下有一个方便的python版本管理器pyLauncher。可以使用py -x.x来指定使用x.x版本的python解释器。由于电脑硬盘空间不够,我将3.10及以上版本的python安装在了移动硬盘中,仅在本地保留了3.7和3.8版本。某天我拔掉移动硬盘,准备运行一些程序。输入py 后却显示 。
Unable to create process using 'I:\usr\Python311。
I盘是我移动硬盘的盘符。
而后开始排查,发现py --list仍然会显示移动硬盘中安装的python版本。并且默认python版本是py3.11。
由于在linux系统下的经验,我首先觉得这是环境变量的问题。可能py在环境变量中保存了当前系统安装过的所有python版本。可是在仔细检查环境变量后铩羽而归。当中并没有任何和python installed version相关的变量。无奈只好按照搜到的某篇博客【1】中的链接:
https://docs.python.org/3/using/windows.html#known-issues
在用户的appdata\local文件夹下创建了py.ini文件来默认执行3.8版本的解释器。
但是最近又出问题了,安装mysql时需要用到sqlPythonConnector组件。可是安装时总时出错,排查log后发现是找不到I盘符。这下必须得解决之前的问题了。
win和linux最大的不同是win中有一个离谱的注册表。linux下一般把一些配置保存在环境变量或者一些ini,cfg文件中。而在win下这些东西也可以保存在注册表中。打开python的安装程序重新跑了一遍,发现有这样一个选项Install for all user。下意识感觉它绝对往注册表里写了什么。上网以关键词 ”python 安装 注册表“ 搜索。发现python会在HKEY_CURRENT_USER(没有勾选for all user)或HKEY_LOCAL_MACHINE(勾选for all user)里写入安装的python版本。具体位置为:HKEY_CURRENT_USER\SOFTWARE\Python。于是win+r然后regedit打开注册表编辑器。找到这个目录。然后先右键导出备份。然后删除pythonCore当中大于3.8的python版本。

之后成功安装sqlconnector。并且py -0也不会显示高于3.8的版本了。
【1】https://blog.csdn.net/xia0227/article/details/100006564