やりたいこと
pyenvでPython 3.7.0をインストール
環境
インストール失敗
$ 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を発見。
その中で、次のコマンドを発見。
$ 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"