ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
Pyenvで2系がインスコできない問題.**ERROR**: The Python ssl extension was not compiled. Missing the OpenSSL lib?
のようにエラーが出ます.
バージョン管理ツールであるpyenv.最近Python2系をインストールしようとした時にエラーが出てつまずいたので同じ現象に悩んでいる人がいたら少しでも力になれば幸いです.
環境
Macbook Pro 2018 Late
MacOS Mojave 10.14.6
状況
3系はインストール成功するのに2系だけインストールできない.
pyenvで2系をインストールしようとする
pyenv install 2.7.10
pyenv install 2.7.10 python-build: use openssl from homebrew python-build: use readline from homebrew Downloading Python-2.7.10.tar.xz... -> https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz Installing Python-2.7.10... patching file ./Lib/site.py python-build: use readline from homebrew python-build: use zlib from xcode sdk **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.14.6 using python-build 1.2.16-4-g14871354) Inspect or clean up the working tree at /var/folders/qx/_h8xypcx0kb8sj9q76rbwn2r0000gn/T/python-build.20200217193102.1168 Results logged to /var/folders/qx/_h8xypcx0kb8sj9q76rbwn2r0000gn/T/python-build.20200217193102.1168.log Last 10 log lines: rm -f /Users/fumi/.pyenv/versions/2.7.10/share/man/man1/python.1 (cd /Users/fumi/.pyenv/versions/2.7.10/share/man/man1; ln -s python2.1 python.1) if test "xno" != "xno" ; then \ case no in \ upgrade) ensurepip="--upgrade" ;; \ install|*) ensurepip="" ;; \ esac; \ ./python.exe -E -m ensurepip \ $ensurepip --root=/ ; \ fi
**ERROR**: The Python ssl extension was not compiled. Missing the OpenSSL lib?
と言われてしまっているようですね.wikiを見ろと言われているので見てみます.
トライ1
このように書いてあるので試してみます.
CFLAGS="-I$(brew --prefix openssl)/include" \ LDFLAGS="-L$(brew --prefix openssl)/lib" \ pyenv install -v 3.4.3
ダメでした.同じようなエラーが出ていますね.
...中略 rm -f /Users/fumi/.pyenv/versions/2.7.10/bin/python-config (cd /Users/fumi/.pyenv/versions/2.7.10/bin; ln -s python2-config python-config) test -d /Users/fumi/.pyenv/versions/2.7.10/lib/pkgconfig || /usr/bin/install -c -d -m 755 /Users/fumi/.pyenv/versions/2.7.10/lib/pkgconfig rm -f /Users/fumi/.pyenv/versions/2.7.10/lib/pkgconfig/python2.pc (cd /Users/fumi/.pyenv/versions/2.7.10/lib/pkgconfig; ln -s python-2.7.pc python2.pc) rm -f /Users/fumi/.pyenv/versions/2.7.10/lib/pkgconfig/python.pc (cd /Users/fumi/.pyenv/versions/2.7.10/lib/pkgconfig; ln -s python2.pc python.pc) rm -f /Users/fumi/.pyenv/versions/2.7.10/share/man/man1/python2.1 (cd /Users/fumi/.pyenv/versions/2.7.10/share/man/man1; ln -s python2.7.1 python2.1) rm -f /Users/fumi/.pyenv/versions/2.7.10/share/man/man1/python.1 (cd /Users/fumi/.pyenv/versions/2.7.10/share/man/man1; ln -s python2.1 python.1) if test "xno" != "xno" ; then \ case no in \ upgrade) ensurepip="--upgrade" ;; \ install|*) ensurepip="" ;; \ esac; \ ./python.exe -E -m ensurepip \ $ensurepip --root=/ ; \ fi **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.14.6 using python-build 1.2.16-4-g14871354) Inspect or clean up the working tree at /var/folders/qx/_h8xypcx0kb8sj9q76rbwn2r0000gn/T/python-build.20200218103636.15430 Results logged to /var/folders/qx/_h8xypcx0kb8sj9q76rbwn2r0000gn/T/python-build.20200218103636.15430.log Last 10 log lines: rm -f /Users/fumi/.pyenv/versions/2.7.10/share/man/man1/python.1 (cd /Users/fumi/.pyenv/versions/2.7.10/share/man/man1; ln -s python2.1 python.1) if test "xno" != "xno" ; then \ case no in \ upgrade) ensurepip="--upgrade" ;; \ install|*) ensurepip="" ;; \ esac; \ ./python.exe -E -m ensurepip \ $ensurepip --root=/ ; \ fi
この記事を見ると大丈夫そうなのにできない.環境の問題かなぁ.
トライ2
様々な記事を調べてみるとOpenSSL関連がおかしそう.バージョンが合わないとか,パスが通ってないとかかな.ということでOpenSSLのバージョンを調べてみる.面倒だったのでもう一度Brew Installしてみた.
brew install openssl
brew install openssl Updating Homebrew... ==> **Auto-updated Homebrew!** Updated 1 tap (homebrew/core). ==> **New Formulae** libcbor ==> **Updated Formulae** balena-cli groovysdk paket bitlbee gsettings-desktop-schemas pandoc-citeproc cassandra gsoap plantuml cfn-lint helmfile root clhep libstfl ruby dialog macvim taskell freeciv manticoresearch vim frotz mgba visp git-gui mikutter weechat golang-migrate mit-scheme wpscan gradle mmctl zola groovy netpbm ==> **Deleted Formulae** gh Warning: openssl@1.1 1.1.1d is already installed and up-to-date To reinstall 1.1.1d, run `brew reinstall openssl@1.1`
バージョンはOpenSSL1.1らしい.何やらパスのことを言っている.
トライ3
一応パスを通してもう一度やってみた.echo 'export PATH="/usr/local/opt/openssl@1.1/bin:$PATH"' >> ~/.zshrc
自分の環境ではzshを使ってるのでzshrcです.
pyenv install 2.7.10 ✘ 1 python-build: use openssl from homebrew python-build: use readline from homebrew Downloading Python-2.7.10.tar.xz... -> https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz Installing Python-2.7.10... patching file ./Lib/site.py python-build: use readline from homebrew python-build: use zlib from xcode sdk **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.14.6 using python-build 1.2.16-4-g14871354) Inspect or clean up the working tree at /var/folders/qx/_h8xypcx0kb8sj9q76rbwn2r0000gn/T/python-build.20200218105508.40215 Results logged to /var/folders/qx/_h8xypcx0kb8sj9q76rbwn2r0000gn/T/python-build.20200218105508.40215.log Last 10 log lines: rm -f /Users/fumi/.pyenv/versions/2.7.10/share/man/man1/python.1 (cd /Users/fumi/.pyenv/versions/2.7.10/share/man/man1; ln -s python2.1 python.1) if test "xno" != "xno" ; then \ case no in \ upgrade) ensurepip="--upgrade" ;; \ install|*) ensurepip="" ;; \ esac; \ ./python.exe -E -m ensurepip \ $ensurepip --root=/ ; \ fi
ダメです.同じ現象ですね.
しばらく調べているとこのような記事を発見した. OpenSSL1.1で3系を動かしている.2系はもしかしてダメなのか?
結論(トライ4)
このような記事を見つけました.OpenSSL1.1はダメらしい.OpenSSL1.0を入れればいいようです.pyenvは賢いので必要なものがないと必要なものを入れるようになってる.opensslをUninstallしてpyenvでインストールします.
OpenSSLを1.0にしてみます.
brew uninstall openssl
依存があってダメだよって言われましたが強制的に消します.
brew uninstall --ignore-dependencies openssl
そしてpyenvを潜影蛇手
pyenv install 2.7.10
pyenv install 2.7.10 Downloading openssl-1.0.2k.tar.gz... -> https://pyenv.github.io/pythons/6b3977c61f2aedf0f96367dcfb5c6e578cf37e7b8d913b4ecb6643c3cb88d8c0 Installing openssl-1.0.2k... Installed openssl-1.0.2k to /Users/fumi/.pyenv/versions/2.7.10 python-build: use readline from homebrew Downloading Python-2.7.10.tar.xz... -> https://www.python.org/ftp/python/2.7.10/Python-2.7.10.tar.xz Installing Python-2.7.10... patching file ./Lib/site.py python-build: use readline from homebrew python-build: use zlib from xcode sdk Installed Python-2.7.10 to /Users/fumi/.pyenv/versions/2.7.10
これのおかげでできた.pyenvって必要なやつ勝手に入れてくれるんすねー,すごい.
結論として,OpenSSLが1.0じゃないといけないところ,1.1がインスコされていたためだったっぽい.2系はOpenSSL1.0なんだね.ちなみに3系はそのまま入ったので1.1でいいみたい.
後付け
OpenSSL1.0のままPython3をインストールしようとするとこのようになります.
pyenv install 3.8.1 Downloading openssl-1.1.0j.tar.gz... -> https://www.openssl.org/source/openssl-1.1.0j.tar.gz Installing openssl-1.1.0j... Installed openssl-1.1.0j to /Users/fumi/.pyenv/versions/3.8.1 python-build: use readline from homebrew Downloading Python-3.8.1.tar.xz... -> https://www.python.org/ftp/python/3.8.1/Python-3.8.1.tar.xz Installing Python-3.8.1... python-build: use readline from homebrew python-build: use zlib from xcode sdk Installed Python-3.8.1 to /Users/fumi/.pyenv/versions/3.8.1
無事にインスコ成功しますね.
このようにpyenvが自動でOpenSSL1.1にアップデートしてくれます.ありがたい.OpenSSL1.1じゃないとPython3系の動作で不具合が出るのでPython2のインストールが終わったらOpenSSLを新しくしてあげましょう.なお.OpenSSL1.1でもPython2は正常に動作します.インストールだけがダメみたい.
ちょっとややこしいけどPythonは環境構築が一番難しいってそれ言われてるから.