pyenv install で ModuleNotFoundError: No module named 'pyexpat' でコケたときの対応メモ
問題
pyenvで新しいpytonをインストールしようとした時に下記のようなエラーが出てインストールできなかった。
$ pyenv install 3.7.5 ... ... (中略) ... ModuleNotFoundError: No module named 'pyexpat' make: *** [install] Error 1
ネットで出てくる記事
日本語ではこちらの記事がでてきた。
pyexpat が原因で pyenv install が出来ない解決方法 - Qiita
おいおいホントかよって感じのソリューションだったのでリンク先のgithubのissueをよくよく読んだら本当の原因と解決方法が書いてあった。
https://github.com/pyenv/pyenv/issues/1066
原因
基本的にはこちらのコメントの通り。
https://github.com/pyenv/pyenv/issues/1066#issuecomment-503246581
In particular, it causes pyexpat to fail to link when installing on a fresh Mojave system with the 10.14 Command Line Tools and SDK headers (/Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg) installed.
そういえば自分も以前に昔のバージョンのnokogiriとかmysql2 gemとかインストールするために、このheaderファイルインストールしてた。。。
対応
https://github.com/pyenv/pyenv/issues/1066#issuecomment-538201389
# This location may be different defendant on how the CLI tools were installed. $ sudo rm -rf /Library/Developer/CommandLineTools $ xcode-select --install
基本的には消してcommand line toolsを再インストールすればOKとのこと。試したらちゃんとpyenvでのpythonのインストールができました。