背景
pyenvでpython 3.10.13をインストールしようとしたところ、次のようなエラーを受けました。
$ pyenv install 3.10.13 python-build: use openssl@1.1 from homebrew python-build: use readline from homebrew Downloading Python-3.10.13.tar.xz... -> https://www.python.org/ftp/python/3.10.13/Python-3.10.13.tar.xz Installing Python-3.10.13... python-build: use readline from homebrew python-build: use ncurses from homebrew python-build: use zlib from homebrew Traceback (most recent call last): File "<string>", line 1, in <module> File "/Users/jun06t/.pyenv/versions/3.10.13/lib/python3.10/ssl.py", line 99, in <module> import _ssl # if we can't import it, let the error propagate ModuleNotFoundError: No module named '_ssl' ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib? Please consult to the Wiki page to fix the problem. https://github.com/pyenv/pyenv/wiki/Common-build-problems BUILD FAILED (OS X 13.6 using python-build 20180424)
その解消方法です。
環境
- macOS 13.6
- pyenv 2.3.35
解決方法
$ brew install openssl@1.1
して
export LDFLAGS="-L$(brew --prefix openssl@1.1)/lib $LDFLAGS" export CPPFLAGS="-I$(brew --prefix openssl@1.1)/include $CPPFLAGS" export PKG_CONFIG_PATH="$(brew --prefix openssl@1.1)/lib/pkgconfig"
をすると解消できます。
その他
どのバージョンでこのエラーが発生する?
どのバージョンでこのエラーが発生するか、いくつか試してみました
バージョン | エラー発生 |
---|---|
3.9.18 | 発生する |
3.10.12 | 発生する |
3.10.13 | 発生する |
3.11.0 | 発生する |
3.11.7 | 発生しない |
3.12.1 | 発生しない |
CPython supports OpenSSL 3, the support is official since 3.11.5 . So you don't need 1.1 anymore.
とある様に3.11.5からOpenSSL3を使うようになりましたが、それ以前のバージョンではOpenSSL 1.1を使うためこの問題に遭遇するようです。