pyenv で install 時にエラーが出てインストールできない

環境

MacBook Air M1, 2020
MacOS 14.4.1

困ったこと

pyenv をhomebrew経由でinstallしました。
pyenv –version でインストールを確認したものの、

$ pyenv install 3.11.1

と入力しても、途中でエラーが起きてしまいます。
下はその時のログです。

BUILD FAILED (OS X 14.4.1 using python-build 20180424)

Inspect or clean up the working tree at /var/folders/v6/jcq_s0rd58x3kph7trv7jfjw0000gn/T/python-build.20240401212257.5503
Results logged to /var/folders/v6/jcq_s0rd58x3kph7trv7jfjw0000gn/T/python-build.20240401212257.5503.log

Last 10 log lines:
      __locale_localeconv in _localemodule.o
      __locale_localeconv in _localemodule.o
      __locale_localeconv in _localemodule.o
  "_libintl_textdomain", referenced from:
      __locale_textdomain in _localemodule.o
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [Programs/_freeze_module] Error 1
make: *** Waiting for unfinished jobs....
2 warnings generated.

解決して方法

この記事の方法で解決しました。

openssl, gettext, readline のアンインストール

–ignore-dependenciesオプションで依存関係を無視してアンインストールすることができます。

$ brew uninstall --ignore-dependencies openssl gettext readline

openssl、gettext、readline の再インストール

-x86_64 オプションは、特定のアーキテクチャでパッケージを再インストールするために使用されます。これにより、適切なアーキテクチャで再インストールされたことを確認できます。

$ /usr/bin/arch -x86_64 brew install openssl gettext readline

pyenv のインストール。

ここでも-x86_64 オプションをつけています。

$ /usr/bin/arch -x86_64 pyenv install 3.11.2

これで成功しました。

しかし、この後 $python –version では comand not found になってしまい、
$python3 –versionでは設定ができるという状態になってしまいました。
この問題に関しては以下の記事で解説しています。

Mac $python と $python3 のバージョンを揃えたい

ちなみに最初に再インストールしたパッケージは、
opensslは、セキュリティ関連の機能を提供するライブラリ。

gettextは、多言語対応のプログラムを作成するためのツールセットです。主な目的は、プログラム内のテキストメッセージを翻訳可能な形式で管理することです。多言語対応のアプリケーションやライブラリで、ユーザーインターフェースのテキストをローカライズする際に使用されます。

readlineは、コマンドラインインターフェース(CLI)でのテキスト入力をサポートするライブラリです。主な機能は、ユーザーがコマンドラインで入力したテキストを編集、履歴を管理し、補完を提供することです。ターミナルやシェルでの対話的な入力を向上させるために使用されます。

この3つともプログラミングやシステム管理のコンテキストで広く使用されています。

他に試したダメだった方法

pyenv の再インストール

最初に試したものでしたが、上手くいきませんでした。

$ brew uninstall pyenv
$ brew install pyenv

.zshrc, .zprofile に下記を書いたのを何度も確認しましたが、install 時のエラーとは関係ないようです。

# pyenv settings
export PYENV_ROOT="$HOME/.pyenv"
command -v pyenv >/dev/null || export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"

コマンドラインツールの再インストール

以下のコードを実行することはどのブログにも載っていたのですが、ダメでした。
Macのバージョンアップデートや再起動も併用しましたが上手くいきませんでした。

$ sudo rm -rf /Library/Developer/CommandLineTools
$ xcode-select --install