猫でもわかるWeb開発・プログラミング

本業エンジニアリングマネージャー。副業Webエンジニア。Web開発のヒントや、副業、日常生活のことを書きます。

pyenv を使っている環境で bad interpreter: /usr/local/opt/python@2/bin/python2.7: no such file or directory

f:id:yoshiki_utakata:20210322112724p:plain

問題

先日、久々に eb コマンド(Python で書かれている、 AWS ElasticBeanstalk の CLI ツール)を使おうとして、以下のエラーになった。

$ eb list
zsh: /usr/local/bin/eb: bad interpreter: /usr/local/opt/python@2/bin/python2.7: no such file or directory

python コマンドを叩くと、 python 2.7 が入っていた

$ python --version
Python 2.7.16

試しに、 pip --version しても、 bad interpreter のエラーが出た

$ pip --version
/Users/sakamoto/.pyenv/shims/pip: line 21: /usr/local/Cellar/pyenv/1.2.20/libexec/pyenv: No such file or directory

pyenv を使っていて、バージョンは 1.2.21

$ pyenv
pyenv 1.2.21

$ pyenv versions
  system
  3.4.3
* 3.6.5 (set by /Users/yoshiyuki_sakamoto/.pyenv/version)

何故か python3 コマンドの挙動もおかしい

$ python3 --version
/Users/sakamoto/.pyenv/shims/python3: line 21: /usr/local/Cellar/pyenv/1.2.20/libexec/pyenv: No such file or directory

解決方法

自分が以前書いた記事を参考に、 python3 で aws と awsebcli をインストールしたいが、その前に python まわりが壊れているっぽいので治す。

pyenv の symlink がおかしくなっているようなので、 rahash してなおす。

$ pyenv rehash

これで、 python 周りの依存関係がきれいになった

# 何故か python コマンドだけは python2 のままだが...
$ python --version
Python 2.7.16

$ which python
/usr/bin/python

# python3 は pyenv のものになっている
$ python3 --version
Python 3.6.5

$ which python3
/Users/sakamoto/.pyenv/shims/python3

# pip コマンドは pyenv の python3 のものになっている
$ pip --version
pip 9.0.3 from /Users/sakamoto/.pyenv/versions/3.6.5/lib/python3.6/site-packages (python 3.6)

これで問題なく、 python3 コマンドと pip コマンドが叩けるようになったので、記事の通り aws と awsebcli を再インストールする。

$ pip install aws
$ pip install awsebcli --upgrade --user

ちなみに以前の記事とはこちら

www.utakata.work