ヴェズルフェルニルの研究ノート

座右の銘「ただ一人犀の角のように歩め」的な研究活動ノート

asdf:Python 3.12.x インストール時に 'Modules/_ssl.cpython-312-darwin.so': No such file or directory エラー

asdf で(pyenvでも) Python 3.12.xをインストールしようとしたら、以下のようなエラー出力に遭遇した。

% asdf install python 3.12.2
....    ....
....    ....

BUILD FAILED (OS X 13.4.1 using python-build 2.5.3-2-g2f4bdcdb)

Inspect or clean up the working tree at /var/folders/4c/wcry6r391s5cxyc66bnktgf80000gn/T/python-build.20250302164807.4616
Results logged to /var/folders/4c/wcry6r391s5cxyc66bnktgf80000gn/T/python-build.20250302164807.4616.log

Last 10 log lines:
/usr/local/bin/ginstall -c -m 755 Modules/termios.cpython-312-darwin.so /Users/LOGNAME/.asdf/installs/python/3.12.2/lib/python3.12/lib-dynload/termios.cpython-312-darwin.so
/usr/local/bin/ginstall -c -m 755 Modules/_posixshmem.cpython-312-darwin.so /Users/LOGNAME/.asdf/installs/python/3.12.2/lib/python3.12/lib-dynload/_posixshmem.cpython-312-darwin.so
/usr/local/bin/ginstall -c -m 755 Modules/_multiprocessing.cpython-312-darwin.so /Users/LOGNAME/.asdf/installs/python/3.12.2/lib/python3.12/lib-dynload/_multiprocessing.cpython-312-darwin.so
/usr/local/bin/ginstall -c -m 755 Modules/_ctypes.cpython-312-darwin.so /Users/LOGNAME/.asdf/installs/python/3.12.2/lib/python3.12/lib-dynload/_ctypes.cpython-312-darwin.so
/usr/local/bin/ginstall -c -m 755 Modules/_curses.cpython-312-darwin.so /Users/LOGNAME/.asdf/installs/python/3.12.2/lib/python3.12/lib-dynload/_curses.cpython-312-darwin.so
/usr/local/bin/ginstall -c -m 755 Modules/_curses_panel.cpython-312-darwin.so /Users/LOGNAME/.asdf/installs/python/3.12.2/lib/python3.12/lib-dynload/_curses_panel.cpython-312-darwin.so
/usr/local/bin/ginstall -c -m 755 Modules/_sqlite3.cpython-312-darwin.so /Users/LOGNAME/.asdf/installs/python/3.12.2/lib/python3.12/lib-dynload/_sqlite3.cpython-312-darwin.so
/usr/local/bin/ginstall -c -m 755 Modules/_ssl.cpython-312-darwin.so /Users/LOGNAME/.asdf/installs/python/3.12.2/lib/python3.12/lib-dynload/_ssl.cpython-312-darwin.so
ginstall: cannot stat 'Modules/_ssl.cpython-312-darwin.so': No such file or directory
make: *** [sharedinstall] Error 1
error installing version: failed to run install callback: exit status 1

Python 3.12.xのインストール自体は成功しているようだが、このエラーで示されている _ssl.cpython-312-darwin.so というモジュールは欠落してしまっているようだ。

インストールされているOpenSSLが1.x系で、そちらがビルド用ライブラリ参照先になっていると、このようなエラーになるようだ。

Macの場合は、Homebrewで下のように OpenSSL 3.x系をインストールして、

brew unlink openssl
brew install openssl@3
brew link openssl@3

さらに、.bashrczshなら.zshrc)に下のようなビルド用ライブラリ参照先を明示的に設定してやる。

export CPPFLAGS="-I$(brew --prefix)/include"
export LDFLAGS="-L$(brew --prefix)/lib"

上の操作を行った上で、一旦エラーが出力されたPython 3.12.xをアンイストールして、再度インストールを行うと解決できる。

asdf uninstall python 3.12.2
asdf install python 3.12.2

Ubuntu/Linuxでも、Python 3.12.xのインストール時に同様のエラーが出力されたら、ビルド用ライブラリ参照先としてOpenSSL 1.x系を無効にして3.x系を有効にすれば解決できるはずだ。

【参照リンク】

github.com