記錄一個(gè)解決的問題
首先,在win下有一個(gè)方便的python版本管理器pyLauncher??梢允褂胮y -x.x來指定使用x.x版本的python解釋器。由于電腦硬盤空間不夠,我將3.10及以上版本的python安裝在了移動(dòng)硬盤中,僅在本地保留了3.7和3.8版本。某天我拔掉移動(dòng)硬盤,準(zhǔn)備運(yùn)行一些程序。輸入py 后卻顯示 。
Unable to create process using 'I:\usr\Python311。
I盤是我移動(dòng)硬盤的盤符。
而后開始排查,發(fā)現(xiàn)py --list仍然會(huì)顯示移動(dòng)硬盤中安裝的python版本。并且默認(rèn)python版本是py3.11。
由于在linux系統(tǒng)下的經(jīng)驗(yàn),我首先覺得這是環(huán)境變量的問題。可能py在環(huán)境變量中保存了當(dāng)前系統(tǒng)安裝過的所有python版本??墒窃谧屑?xì)檢查環(huán)境變量后鎩羽而歸。當(dāng)中并沒有任何和python installed version相關(guān)的變量。無奈只好按照搜到的某篇博客【1】中的鏈接:
https://docs.python.org/3/using/windows.html#known-issues
在用戶的appdata\local文件夾下創(chuàng)建了py.ini文件來默認(rèn)執(zhí)行3.8版本的解釋器。
但是最近又出問題了,安裝mysql時(shí)需要用到sqlPythonConnector組件??墒前惭b時(shí)總時(shí)出錯(cuò),排查log后發(fā)現(xiàn)是找不到I盤符。這下必須得解決之前的問題了。
win和linux最大的不同是win中有一個(gè)離譜的注冊(cè)表。linux下一般把一些配置保存在環(huán)境變量或者一些ini,cfg文件中。而在win下這些東西也可以保存在注冊(cè)表中。打開python的安裝程序重新跑了一遍,發(fā)現(xiàn)有這樣一個(gè)選項(xiàng)Install for all user。下意識(shí)感覺它絕對(duì)往注冊(cè)表里寫了什么。上網(wǎng)以關(guān)鍵詞 ”python 安裝 注冊(cè)表“ 搜索。發(fā)現(xiàn)python會(huì)在HKEY_CURRENT_USER(沒有勾選for all user)或HKEY_LOCAL_MACHINE(勾選for all user)里寫入安裝的python版本。具體位置為:HKEY_CURRENT_USER\SOFTWARE\Python。于是win+r然后regedit打開注冊(cè)表編輯器。找到這個(gè)目錄。然后先右鍵導(dǎo)出備份。然后刪除pythonCore當(dāng)中大于3.8的python版本。

之后成功安裝sqlconnector。并且py -0也不會(huì)顯示高于3.8的版本了。
【1】https://blog.csdn.net/xia0227/article/details/100006564