Blufflog

This blog is bluff

pyenvでPython 3.7.0のインストールに失敗した話

やりたいこと

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"