Carpe Diem

備忘録

pyenvからインストールする際にSSLがないというエラー

背景

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を使うためこの問題に遭遇するようです。

参考