プログラミング学習日記

プログラミング学習時のメモ帳。

pyenv install エラー

間違っている場所あったら優しく教えてね

pyenv install しようとしたら ZipImportError が出てしまった

$ pyenv install 3.7.2
~~省略
zipimport.ZipImportError: can't decompress data; zlib not available
~~省略

このように.ZipImportErrorが出てしまった.


zlibとは

Wikipediaさんが紹介してくれている.
簡単に要約すると, いろんな言語で使えるデータを圧縮したり伸張したりしてくれるフリーライブラリです


これを読むと zlib で圧縮したものをインストールしたいかインストールしてから圧縮したいのかなってお気持ちになります.
とりあえず zlib が必要とわかったので install をします.
ここ参考

$ brew install zlib
Updating Homebrew...
~~省略~~
==> Downloading https://homebrew.bintray.com/bottles/zlib-1.2.11.mojave.bottle.t
######################################################################## 100.0%
==> Pouring zlib-1.2.11.mojave.bottle.tar.gz
==> Caveats
zlib is keg-only, which means it was not symlinked into /usr/local,
because macOS already provides this software and installing another version in
parallel can cause all kinds of trouble.

For compilers to find zlib you may need to set:
  export LDFLAGS="-L/usr/local/opt/zlib/lib"
  export CPPFLAGS="-I/usr/local/opt/zlib/include"

==> Summary
🍺  /usr/local/Cellar/zlib/1.2.11: 12 files, 373KB
==> `brew cleanup` has not been run in 30 days, running now...

brewについて何もわかっていないので調べておきたい.
言われた通りの行動をしよう

export LDFLAGS="-L/usr/local/opt/zlib/lib"
export CPPFLAGS="-I/usr/local/opt/zlib/include"

この2文を.bash_profileに書き込みました.source .bash_profileを行なってからもう一度インストールに挑戦

$ pyenv install 3.7.2
~~省略
Installing Python-3.7.2...
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.3 using python-build 1.2.9-25-gaefff77b)

Inspect or clean up the working tree at /var/folders/z8/mqt9mtjs4012xl0vkhfk8v480000gn/T/python-build.20190325223953.43867
Results logged to /var/folders/z8/mqt9mtjs4012xl0vkhfk8v480000gn/T/python-build.20190325223953.43867.log

Last 10 log lines:
            install|*) ensurepip="" ;; \
        esac; \
         ./python.exe -E -m ensurepip \
            $ensurepip --root=/ ; \
    fi
Looking in links: /var/folders/z8/mqt9mtjs4012xl0vkhfk8v480000gn/T/tmpl24b01m6
Collecting setuptools
Collecting pip
Installing collected packages: setuptools, pip
Successfully installed pip-18.1 setuptools-40.6.2

最後にSuccessfullyが見えたと思ったらエラーメッセージがでていた..
こちらを参考にしてどうにかする

opensslとは

おきまりのWikipediaさんの登場.
要約するとプロトコル関係のソフトウェア.
ボクなりに解釈すると , 渡された暗号を解析する便利道具.
そりゃなきゃ解読できないわけですよね

こちらも参考にする

$ $ brew install readline xz
Updating Homebrew...
==> Downloading https://homebrew.bintray.com/bottles/readline-8.0.0.mojave.bottl
######################################################################## 100.0%
==> Pouring readline-8.0.0.mojave.bottle.tar.gz
==> Caveats
readline is keg-only, which means it was not symlinked into /usr/local,
because macOS provides the BSD libedit library, which shadows libreadline.
In order to prevent conflicts when programs look for libreadline we are
defaulting this GNU Readline installation to keg-only.

For compilers to find readline you may need to set:
  export LDFLAGS="-L/usr/local/opt/readline/lib"
  export CPPFLAGS="-I/usr/local/opt/readline/include"

==> Summary
🍺  /usr/local/Cellar/readline/8.0.0: 48 files, 1.5MB
==> Downloading https://homebrew.bintray.com/bottles/xz-5.2.4.mojave.bottle.tar.
######################################################################## 100.0%
==> Pouring xz-5.2.4.mojave.bottle.tar.gz
🍺  /usr/local/Cellar/xz/5.2.4: 92 files, 1MB
==> Caveats
==> readline
readline is keg-only, which means it was not symlinked into /usr/local,
because macOS provides the BSD libedit library, which shadows libreadline.
In order to prevent conflicts when programs look for libreadline we are
defaulting this GNU Readline installation to keg-only.

For compilers to find readline you may need to set:
  export LDFLAGS="-L/usr/local/opt/readline/lib"
  export CPPFLAGS="-I/usr/local/opt/readline/include"

2回繰り返した??かと思ったらbrew installコマンドでreadlinexzの二つをinstallしていたというお話だ.
確認確認焦らず確認

$ brew list
readline    xz      zlib

インストールの成功です.
言われた通りに.bash_profileに以下の2行を付け加えます.

export LDFLAGS="-L/usr/local/opt/readline/lib"
export CPPFLAGS="-I/usr/local/opt/readline/include"

じゃけんもう一度pyenv installじゃ

$ pyenv install 3.7.2
BUILD FAILED (OS X 10.14.3 using python-build 1.2.9-25-gaefff77b)

Inspect or clean up the working tree at /var/folders/z8/mqt9mtjs4012xl0vkhfk8v480000gn/T/python-build.20190325231516.84549
Results logged to /var/folders/z8/mqt9mtjs4012xl0vkhfk8v480000gn/T/python-build.20190325231516.84549.log

Last 10 log lines:
  File "/private/var/folders/z8/mqt9mtjs4012xl0vkhfk8v480000gn/T/python-build.20190325231516.84549/Python-3.7.2/Lib/ensurepip/__main__.py", line 5, in <module>
    sys.exit(ensurepip._main())
  File "/private/var/folders/z8/mqt9mtjs4012xl0vkhfk8v480000gn/T/python-build.20190325231516.84549/Python-3.7.2/Lib/ensurepip/__init__.py", line 204, in _main
    default_pip=args.default_pip,
  File "/private/var/folders/z8/mqt9mtjs4012xl0vkhfk8v480000gn/T/python-build.20190325231516.84549/Python-3.7.2/Lib/ensurepip/__init__.py", line 117, in _bootstrap
    return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/private/var/folders/z8/mqt9mtjs4012xl0vkhfk8v480000gn/T/python-build.20190325231516.84549/Python-3.7.2/Lib/ensurepip/__init__.py", line 27, in _run_pip
    import pip._internal
zipimport.ZipImportError: can't decompress data; zlib not available
make: *** [install] Error 1

エラー内容が最初に戻ってしまいました. なぜかというと.bash_profileのなかで環境変数LDFLAGSを今まではzlibに指定したのに今回readlineに変更してしまったからです.

export LDFLAGS="-L/usr/local/opt/readline/lib:${LDFLAGS}"
export CPPFLAGS="-I/usr/local/opt/readline/include:${CPPFLAGS}"

.bash_profileを上の文変えてみました.ダメみたいでした.

zipimport.ZipImportError: can't decompress data; zlib not available

f:id:topaz1-3:20190326014300p:plain /Library/Developer/CommandLineTools/Packagesの中にあった.pkgファイルをダウンロードします.インストールが完了しました.もう一度試してみましょう.

$ pyenv install 3.7.2
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?

またエラーが戻ってきました こちらのサイトを参考に

ブログを見ていただきありがとうございました