🍳

pyenv: zlibのエラーでインストールできない (mac)

2025/02/08に公開

何が起こったか

pyenv install xxx

pyenv で python をインストールしようとしたら、

python-build: use zlib from xcode sdk

という出力を最後に何も動かなくなってしまう。ctrl + D でterminateすることもできない。
Rosseta でアーキテクチャが食い違ってるのかな?と思いながら調査開始。

解決方法

HomeBrew から zlib をインストール

brew install zlib

パスを通す

以下の環境変数を設定する。

export LDFLAGS="-L/opt/homebrew/opt/zlib/lib"
export CPPFLAGS="-I/opt/homebrew/opt/zlib/include"
export PKG_CONFIG_PATH="/opt/homebrew/opt/zlib/lib/pkgconfig"

これでもうまくいかないとき

PYTHON_CONFIGURE_OPTS を使って強制的に zlib のパスを指定することができる。
以下のコマンドでインストールに成功した。

env PYTHON_CONFIGURE_OPTS="--with-zlib-dir=/opt/homebrew/opt/zlib" pyenv install -v 3.7.17

もう一度別のバージョンをインストールするときはPYTHON_CONFIGURE_OPTSなしでできた。よくわからない。

おまけ

make できない

上記の方法で zlib の問題は解消できたが、別の問題が発生した。
make の部分でエラーが起こった

'/opt/homebrew/Cellar/gettext/0.23.1/lib/libintl.8.dylib'
(mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), '/usr/local/lib/libintl.8.dylib' (no such file),
'/usr/lib/libintl.8.dylib' (no such file, not in dyld cache)

どうやら移行前の古い mac のツールチェーンが残っているようである。

> which make
/opt/toolchain/arm-unknown-linux-gnueabihf/bin/make
> file /opt/toolchain/arm-unknown-linux-gnueabihf/bin/make
// x86_64と表示される。Apple Silicon 用のバイナリなら arm64 のはず。

ひとまず、/opt/toolchain/arm-unknown-linux-gnueabihf/bin/makeを削除。
再度 make コマンドを打ってみると今度は xcode-select の正しいツールチェーンをインストールするためのダイアログが出てきた。
ようやく成功するかと思いきや、更に次の問題にぶつかった。

xcode-selectによるツールチェーンのインストールの無限ループ

先ほどのダイアログでは、インストールが完了した旨のメッセージが出てきた。
試しに手元のターミナルでmakeと入力すると、先ほどと同じインストールのダイアログが開く。
3度目くらいインストールを繰り返して無限ループに陥っていることに気づいた。
色々調べてみたけど解決せず。
結局 PC を再起動したら直ったというオチでした。

長かった。。。

Discussion