created: 2020-08-12T02:49:42.000Z

/usr/local/Cellar/pyenv/1.2.8/libexec/pyenv: No such file or directory

brewで色々アップグレードされたあと、pyenvで入れたpythonが動かなくなることがある

$ code
/Users/sakamoto/.pyenv/shims/python: 行 21: /usr/local/Cellar/pyenv/1.2.8/libexec/pyenv: No such file or directory
/usr/local/bin/code: 行 10: ./MacOS/Electron: No such file or directory

pyenvで入れたpython (~/.pyenv/shims/python) はbashスクリプトになっていて、以下の行にもう存在しないパスがハードコードされてるので発生している

$ tail -1 ~/.pyenv/shims/python
exec "/usr/local/Cellar/pyenv/1.2.8/libexec/pyenv" exec "$program" "$@"

これは pyenv rehash で直る

$ pyenv rehash
$ tail -1 ~/.pyenv/shims/python
exec "/usr/local/Cellar/pyenv/1.2.20/libexec/pyenv" exec "$program" "$@"

rehashは現在のshimsのパスに張り替えたスクリプトを作り直してくれるもの

本来だと自動的にrehashがされるはず、とのことだがたぶんbrewが勝手にpyenv自体のパスを変えてしまうのでそれをカバーするのは無理なのだろう。困ってる人たくさんいるみたいなのでエラーメッセージがもうちょい親切になってればいいのかもしれない