どうも、nippa です。
pyenv をアップデートしたら、Homebrew の python と confliction を起こしました。
その解決方法を記載しておきます。
原因はアップデートで python の環境変数を指定しないといけなくなったことが原因のようです。
また anyenv を使って pyenv をインストールしていることもあり、少し複雑でした。
環境
- macOS 10.15
- anyenv 1.1.2
- pyenv 1.2.27
pyenv のエラーについて
pyenv を anyenv の update プラグインでアップデートしたところ、ターミナルにログインするたびに以下のような warning が出力されるようになりました。
WARNING: `pyenv init -` no longer sets PATH. Run `pyenv init` to see the necessary changes to make to your configuration.
ホームディレクトリの.zshrc
に記載している
eval "$(pyenv init -)"
で pyenv の path の設定が行われなくなりました。
そのため、python が system(brew) の方に向いてしまっていました。
which python # python path /usr/local/bin/python
pyenv の path 設定の原因
pyenv アップデートによって、path の設定が変更になったようです。
path の設定方法が以前の変わっていました。
pyenv init # (The below instructions are intended for common # shell setups. See the README for more guidance # if they don't apply and/or don't work for you.) # Add pyenv executable to PATH and # enable shims by adding the following # to ~/.profile and ~/.zprofile: export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" # Load pyenv into the shell by adding # the following to ~/.zshrc: eval "$(pyenv init -)" # Make sure to restart your entire logon session # for changes to profile files to take effect.
エラーの解決方法
pyenv を brew でインストールしている場合が、pyenv init
の実行で出力される通りに.zprofile
、.zshrc
に設定を書き換えれれば良いです。
#.zprofile に以下を記載 export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)" #.zshrcに以下を記載 eval "$(pyenv init -)"
anyenv で pyenv をインストールしている場合は、pyenv init
で指定されている path ではないので、anyenv でインストールした pyenv の path を指定する必要があります。
anyenv のデフォルトのインストールであれば、以下のようになります。
export PYENV_ROOT="$HOME/.anyenv/envs/pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init --path)"
これで、エラーを解決できます。
感想
どうやら最近の変更によって起こる問題のようですね。
anyenv を使ってたのもあり少々困惑しましたが、アップデート後も問題なく python が使えています。
気軽に pyenv をアップデートしたら、設定が変更されていたので驚きましたが解決できたのでよしとしましょう。
ではでは、また次回。