pyenv経由でインストールしたpython2/3に紐づく実行ファイルが実行できなくなったので対応した。
brewでインストールしていたpyenvが更新された。
これ自体はupgradeで簡単にできたのだが、そのあとちょっとした問題が起きた。
python3が動かない、jupyterも立ち上がらない。
どちらもこんな感じのエラーメッセージを残して止まっていました。
$ python3 /Users/piruty/.pyenv/shims/python3: line 21: /usr/local/Cellar/pyenv/1.1.5/libexec/pyenv: No such file or directory
エラー内容はわかりやすく、「pyenv 1.1.5のディレクトリにあったpyenv実行ファイルがなくなったから、python3起動できないよ」と言うもの。
ちなみに、更新後のpyenvのバージョンは1.2.0だった。
確かにupgradeした後にcleanupもしていた気もするので、そりゃなくなってるよね。
で、気になって/Users/piruty/.pyenv/shims/python3
の中身を確認してみた。
#!/usr/bin/env bash set -e [ -n "$PYENV_DEBUG" ] && set -x ... export PYENV_ROOT="/Users/fujii/.pyenv" exec "/usr/local/Cellar/pyenv/1.1.5/libexec/pyenv" exec "$program" "$@" # この行のpyenv以下のパスを修正
うむ、pyenv 1.1.5配下の実行ファイルを参照している。
で、ここの1.1.5を1.2.0に直してあげると正常に実行された。
ただ、実行できなくなっているのはほかにも結構あったので(/Users/piruty/.pyenv/shims
以下を参照)、一括で変換することにした。
$ cd /Users/piruty/.pyenv/shim $ grep -l '/usr/local/Cellar/pyenv/1.1.5/libexec/pyenv' ./* | xargs sed -e 's/\/usr\/local\/Cellar\/pyenv\/1\.1\.5\/libexec\/pyenv/\/usr\/local\/Cellar\/pyenv\/1\.2\.0\/libexec\/pyenv/g'
これでOK。
カジュアルなbrew upgradeは気をつけよう。