pyenvをアップデートしたらlibexec/pyenv: No such file or directoryとか言われた話

環境

macOS 10.14.3
pyenv 1.2.11

本題

ある時、気が向いて

$ brew upgrade

を実行したらpyenvのバージョンが上がった。

その直後、

$ python

としたら、

Users/username/.pyenv/shims/python: line 21: /usr/local/Cellar/pyenv/1.2.11/libexec/pyenv: No such file or directory

というエラーメッセージが表示された。

もしやと思い、他のpiptox,django-adminなどのPython依存のコマンドを試して見た所全て

Users/username/.pyenv/shims/pip: line 21: /usr/local/Cellar/pyenv/1.2.11/libexec/pyenv: No such file or directory
Users/username/.pyenv/shims/tox: line 21: /usr/local/Cellar/pyenv/1.2.11/libexec/pyenv: No such file or directory
Users/username/.pyenv/shims/django-admin: line 21: /usr/local/Cellar/pyenv/1.2.11/libexec/pyenv: No such file or directory

と言われてしまった…

エラーの内容を見る限り、pyenvのバージョンが変わったことにより、今まであった場所にファイルがいなくなったことが原因らしい…

RFE: pyenv update should regenerate shims unconditionally
https://github.com/pyenv/pyenv/issues/1068

によると

$ pyenv rehash

とすると治るらしい。

$ python --version
Python 3.7.1

無事治った。

最後に

pyenvのアップデートを行ったら忘れずにpyenv rehashを実行すれば回避できることがわかった。