この前、MacのVSCode内でCondaを使う際に、統合ターミナルでconda activate
しても環境変数が正しく反映されない問題に遭遇した。
$ conda activate my_env
$ echo $PATH
# Conda環境のパスが先頭に来ていない!
デフォルトのターミナルの方でも echo $PATH
を実行してみると、そもそもターミナルで実行した結果とVSCode内で実行した結果が違った。
結論から言うと、VSCodeの統合ターミナルの設定が原因だった。
解決策
- VSCodeの設定 (
Cmd + ,
またはCtrl + ,
) を開く。 - 検索バーに" Terminal Integrated Inherit Env "と入力する。
- " Terminal > Integrated: Inherit Env "のチェックを外す。
- VSCodeの統合ターミナルを再起動する。
この設定をオフにすることで、VSCodeの統合ターミナルが通常のターミナルと同じ動作をするようになった。
原因
「Terminal > Integrated: Inherit Env」が有効になっていると、VSCodeを起動した時のシステム環境変数を統合ターミナルに継承し固定する。
conda activate
は、環境変数を変更してPATHの先頭にConda環境のパスを追加するなどの処理を行うが、VSCodeがシステム環境変数を固定しているため変更が反映されなかったようだ。
Inherit Env
をオフにすることで、VSCode内でもconda activate
が正しく動作した。
特定の拡張機能やプロジェクトがVSCode起動時のシステム環境変数に依存している場合、Inherit Env
をオフにすると問題が発生するかもしれないので注意。