0%

ModuleNotFoundError No module named pyexpat で困ったときの対処法

pyenvを使ってPythonのバージョン管理をしていて、新しくPythonのバージョンを入れようとしときに出たエラーの解決方法メモ。

環境はzsh + pyenv

エラーなど

出てきたエラーがこちら

1
2
3
4
5
$ pyenv install 3.8.0
...
...
ModuleNotFoundError: No module named 'pyexpat'
make: *** [install] Error 1

これについては解決されていた

MacOSのpyenvでpyexpatのエラーが出る対処 | nozograph

だけど、これだけで他と競合してしまった(僕の環境では)

いや、使えはするけど、キモいので。

1
2
3
4
$ exec $SHELL
$ source ./zshrc
(eval):5: parse error near `()''`
$

対処法

ので、頭を抱えていたらスタックオーバーフロー助けてもらえた。
macos - .zshrc の読み込み時のエラーについて - スタック・オーバーフロー

.zshrcをいじる

1
2
3
4
5
6
# pyenv setting
unalias pyenv 2>/dev/null
eval "$(pyenv init -)"
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
alias pyenv="SDKROOT=$(xcrun --show-sdk-path) pyenv"

こんな感じにしておいた。unaliasするだけだと、シェル再起動するたびに「そんなエイリアス貼られていないよ」と言われるので、エラーを空の彼方へ飛ばしている。