讓 VSCode 的 Terminal 執行 Conda 的 Python

其實這個問題一直都有在困擾我,不過因為通常都是用 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

terminal search result

因為好像不能直接在 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: