前提
- macOS 10.15.7(Catalina)
- zsh
- pyenvはインストール済み
-
ここを参考に
.zshenv
に環境変数を記述
pyenvが使用されていないことの発見
pyenvで3.8.6に指定されていることを確認。
% pyenv versions
system
* 3.8.6 (set by /Users/user/.pyenv/version)
ところが実際pythonのバージョンを確認したところ、3.8.6になってない!!
% python3 -V
Python 3.9.0
% python -V
Python 2.7.16
そもそもPATHを確認すると
% echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/user/.pyenv/bin
最初に /user/local/bin
が来ている!
% which python
/usr/bin/python
% which python3
/usr/local/bin/python3
なるほど、pyenvが使われていないわけだ。
~/.zshenv
はこうなっている
% cat ~/.zshenv
export PYENV_ROOT=$HOME/.pyenv
export PATH=$PYENV_ROOT/bin:$PATH
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
内容的には問題なさそう。
PATHの順番を書き換えるとなると、/etc/zprofile
あたりか。
% cat /etc/zprofile
# System-wide profile for interactive zsh(1) login shells.
# Setup user specific overrides for this in ~/.zprofile. See zshbuiltins(1)
# and zshoptions(1) for more details.
if [ -x /usr/libexec/path_helper ]; then
eval `/usr/libexec/path_helper -s`
fi
こんなところ書き換える必要があるのか疑わしいので、pyenvの公式サイトを確認。
すると、~/.zshrc
に
~/.zshrc
if command -v pyenv 1>/dev/null 2>&1; then
eval "$(pyenv init -)"
fi
とするよう書いてある、早速~/.zshenv
に記載していた部分を~/.zshrc
に移動して、ターミナル再起動!
すると、
% echo $PATH
/Users/user/.pyenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/user/.pyenv/bin
% python -V
Python 3.8.6
% which python
/Users/ham/.pyenv/shims/python
結論
- zshの場合は環境変数は全て
~/.zshenv
に記載すればよいというわけではなく、~/.zshrc
も使用する。 - 公式ドキュメントを確認する。