IT技術で仕事を減らしたい!

ITエンジニアのメモ+α

Python pyenv アップデートでpathの設定が変更

どうも、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 をアップデートしたら、設定が変更されていたので驚きましたが解決できたのでよしとしましょう。

ではでは、また次回。