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