背景
剛才修改了Python目錄名,重新添加了環境變量,命令行可以正常執行python。
打開Vim開始編輯文件,發現一輸入或剛輸入幾個字符就閃退了。
解決
重新打開禁用了插件加載,運行正常,逐個開啟檢查發現Ultisnip開啟時,導致這種情況,:PlugStatus (Vim-Plug管理器命令)檢查插件狀態,文件完好,突然想到Ultisnip依賴Python執行環境,可能是改到路徑導致的錯誤。
在控制台執行:
py 顯示:Can't find a default Python
py --list 來列出安裝的python,顯示無法找到已安裝的python
Installed Pythons found by py Launcher for Windows
No Installed Pythons Found!
執行:py --help,發現py並沒有給出直接指明解釋器的方法
經過查詢,發現py.exe是用於做啟動真實python解釋器的中間轉換器,會從外部讀取一些信息來確定調用哪個版本的python解釋器,例如:可以傳入版本號作為啟動參數;讀取文件開始的前幾行shebang注釋:#!/usr/bin/python3。
猜測py.exe在win上讀取了注冊表。
查詢到有人修改了python的注冊表項:
計算機\HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.9\InstallPath
該項下有一個字段:ExecutablePath,修改為解釋器路徑:D:\software\Python\Python3.9\python.exe
重新執行:py
成功進入Python 3.9.1執行環境
執行:py --list
Installed Pythons found by py Launcher for Windows -3.9-64 *
成功列出了安裝的Python
由此確定py.exe在win上是通過讀取注冊表的...\Python...\InstallPath來尋找Python解釋器的
注意:在修改Python安裝目錄后,同時要修改...\Python項下所有與目錄關聯的字段值,以確保其他功能可以正常使用。
參考:
https://stackoverflow.com/questions/57765741/how-to-fix-cant-find-a-default-python-error/59595474#59595474
https://docs.python.org/3/using/windows.html#launcher
