#問題
VSCodeでAnacondaのpythonでなく、macOS標準のpythonが動いてしまいました。
#解決手段
.zshenvに"export PATH="を追加することで、VSCodeでもAnacondaのpythonを動かせるようになりました。
% vi ~/.zshenv
>> export PATH=
#原因究明
##参照先を確認
まずは参照先が違うんだろうなーと思ったところ、
% which python
terminal -> /Users/yuya/opt/anaconda3/bin/python
VSCode -> /usr/bin/python
案の定、それぞれ異なるPATHのpythonを参照していました。なんで?
##PATHを確認
PATHが貼られていないのかと思ったので、見てみると、
% echo $PATH
/Users/user/opt/anaconda3/bin:/Users/user/opt/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/user/opt/anaconda3/bin:/Users/user/opt/anaconda3/condabin
PATHは貼られているが、優先順位が違う。なんで?
##なぜ優先順位が変わったか
いろいろググってみると、この記事でVSCodeの統合ターミナルで再度設定を読み直していることがわかりました。
さらに、この記事の参考記事で優先順位が変わることを言及していました。
どうも/etc/zprofileで動作するpath_helperの影響のようです。
path_helperはデフォルトPATH(/etc/pathsと/etc/paths.d/*で規定)を重複なく、PATHを再設定しているようです。その際、PATHのデフォルトPATHと重複した箇所は削除し、PATHの頭にデフォルトPATHを追記するため、PATHの順番が変わったのだと思われます。
###メカニズム(というほどでもないけど)
まずzshの設定が一通り読み込まれる。ここでは想定したPATHとなっています。
PATH=/Users/user/opt/anaconda3/bin:/Users/user/opt/anaconda3/condabin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
次にVSCodeの統合ターミナルでもう一度、zshの設定が読み込まれるが、path_helperの動作により、デフォルトPATHが頭に移動しています。
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/user/opt/anaconda3/bin:/Users/user/opt/anaconda3/condabin
#zshのログイン時の設定
ここでログイン時にどのような設定ファイルが、どのような順番で読み込まれているのかが気になってきます。この情報はこの記事でわかりました。
/etc/zprofileより前の設定ファイル(.zshenv)でPATHを初期化してやれば
% vi ~/.zshenv
export PATH=
何度読み直しても同じPATHになるはずです。
##同じPATHになりませんでした
anaconda3/condabinが設定されなくなってしまいました...
多分、condaコマンドになにかしら値が設定されると、anaconda3/condabinのPATHは読まれないような設定になっているのでしょう、多分。
でも、やりたいことはできてるので、とりあえずよしとします。