其實這個問題一直都有在困擾我,不過因為通常都是用 iTerm 另外開 Terminal 測試,或是直接用 VSCode 的 Python Plug-in 執行,所以就比較還好。因為想寫 Side Project,今天決定先認真來解決這個問題。
於是就找到了這個 issue:
https://github.com/Microsoft/vscode-python/issues/4434
裡面的 praenubilus 這位大大有說到,原因是 VSCode 在啟動 Terminal 時,可能有特別的 Shell Initialization,這會導致 Conda 的 $PATH
被排在後方,而非前方,可以透過 echo $PATH
指令來查看:
這是一般使用 iTerm 開的:
/Users/xxx/miniconda3/bin:/Users/xxx/miniconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
這是使用 VSCode 的內建 Terminal:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/xxx/miniconda3/bin:/Users/xxx/miniconda3/condabin
一個 Magic Workaround
praenubilus 也提供了一個一個簡單的暫時改善方法:
在 Setting 裡面搜尋 terminal.integrated.env.osx
因為好像不能直接在 GUI 修改,所以我是在 Edit in settings.json 打開設定檔,加入:
"terminal.integrated.env.osx": {
"PATH": ""
}
這樣就可以得到一個乾淨的Terminal(參見這篇 issue: Support using a “clean” environment for the terminal)
同時打開 Terminal 時,也可以正常找到 Conda 的 Python,可以透過 which python
指令來確認,應該要得到下面的結果:
/usr/local/miniconda3/bin/python
至於正式的改善方案…還是個 Open issue:
本文原創部分採用
創用 CC 姓名標示-非商業性-禁止改作 4.0 國際授權條款
授權。