やりたいこと
pyenvでPython 3.7.0をインストール
環境
- macOS High Sierra (10.13.6)
- OpenSSL 1.0.2p(Homebrewでインストール)
- pyenv 1.2.7-3-g5603eb51(anyenvでインストール)
インストール失敗
$ pyenv install -l
で、3.7.0が最新であることを確認。
$ pyenv install 3.7.0
を実行すると、以下のエラーが出てインストール失敗。
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 10.13.6 using python-build 1.2.7-3-g5603eb51)
取り敢えず https://github.com/pyenv/pyenv/wiki/Common-build-problems を見に行く。
Requirementsに brew install readline xz
とあるので実行。
$ brew install readline xz
「ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?」という項目に書かれているコマンドを発見。因みにこれは、HomebrewでOpenSSLをインストール済みの場合のコマンド。
CFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv install -v 3.7.0
実行するも、同じエラーが出てダメ。
解決策
ググった結果、pyenvで3.7.0をインストールできないというpyenvのissueを発見。
Python 3.7.0 :: The Python ssl extension was not compiled. Missing the OpenSSL lib? · Issue #1184 · pyenv/pyenv
その中で、次のコマンドを発見。
$ CONFIGURE_OPTS="--with-openssl=$(brew --prefix openssl)" pyenv install 3.7.0
試す。
python-build: use openssl from homebrew
python-build: use readline from homebrew
Downloading Python-3.7.0.tar.xz...
-> https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
Installing Python-3.7.0...
python-build: use readline from homebrew
Installed Python-3.7.0 to /Users/haru/.anyenv/envs/pyenv/versions/3.7.0
成功。
余談
因みに、現在のmacOSにデフォルトで入っているopensslコマンドの実体はLibreSSL。Homebrewで通常のOpenSSLをインストールできるが、そのままだとパスが通らないため、.bashrc等に以下を記述する必要がある。
export PATH="/usr/local/opt/openssl/bin:$PATH"