Help us understand the problem. What is going on with this article?

Ubuntu18.04においてpyenvを用いたpythonインストール時に生じたBUILD FAILEDのエラーとその対処

More than 1 year has passed since last update.

変更記録

2018.8.22 設定がすべて完了するまでのプロセスを記述するためpyenvのシェル変数へのPATHの通し方を追記

概要

  1. Ubuntu 18.04でpyenvを使ってpython3.6.6をインストールしようとしたところエラーが発生した
  2. エラーメッセージにzlibが無いとのことだったのでこれをsudo apt-get install zlib1g-devでインストールした
  3. Python3.6.6を無事にインストールできた

環境

Ubuntu 18.04.1 LTS

何をしたか

「PyenvによるPython3.x環境構築(CentOS, Ubuntu)」
https://qiita.com/akito1986/items/be5dcd1a502aaf22010b
の記事を参考に、以下のコマンドを実行(参考記事の環境にUbuntu14.04と書いてあったのを気にすればよかったとあとで思った... )
途中でエラーが発生したため解決した。以下で手順を説明

必要なファイルのインストール

(結論から言うとこれに足りないライブラリがあった)

$ sudo apt-get install git gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev

pyenvをgithubからインストール

$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv

pyenvのPathをbashrcを介して通す

$ echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
$ echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
$ echo 'eval "$(pyenv init -)"' >> ~/.bashrc
$ source ~/.bashrc

visudoでsudo時にも同じPathを使用するよう設定

詳細はsudo時にPATHを引き継ぐ方法
を参照すると良い

sudo visudo

を実行するとnanoで権限に関する重要なsudoresファイルを編集するモードになる。この中で以下のように書き換えた。

#Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin
Defaults    env_keep += "PATH"
Defaults    env_keep += "PYENV_ROOT"

#はコメントアウトを表す。何もしていなければ1行目に該当する部分がコメントアウトされずに存在しているのでこれをコメントアウトし2・3行目を追加した。
ctrl+Oで保存、ctrl+Xで終了。(nanoでの操作に慣れていないためググった)

pythonインストールを試みる

sudo pyenv install 3.6.6

エラー発生

$ sudo pyenv install 3.6.6
Downloading Python-3.6.6.tar.xz...
-> https://www.python.org/ftp/python/3.6.6/Python-3.6.6.tar.xz
Installing Python-3.6.6...

BUILD FAILED (Ubuntu 18.04 using python-build 1.2.7-1-g71902168)

Inspect or clean up the working tree at /tmp/python-build.20180822214932.20950
Results logged to /tmp/python-build.20180822214932.20950.log

Last 10 log lines:
    sys.exit(ensurepip._main())
  File "/tmp/python-build.20180822214932.20950/Python-3.6.6/Lib/ensurepip/__init__.py", line 204, in _main
    default_pip=args.default_pip,
  File "/tmp/python-build.20180822214932.20950/Python-3.6.6/Lib/ensurepip/__init__.py", line 117, in _bootstrap
    return _run_pip(args + [p[0] for p in _PROJECTS], additional_paths)
  File "/tmp/python-build.20180822214932.20950/Python-3.6.6/Lib/ensurepip/__init__.py", line 27, in _run_pip
    import pip._internal
zipimport.ZipImportError: can't decompress data; zlib not available
Makefile:1103: recipe for target 'install' failed
make: *** [install] Error 1

エラーメッセージ中に

zipimport.ZipImportError: can't decompress data; zlib not available
Makefile:1103: recipe for target 'install' failed

とあったのでこれをインストール

sudo apt-get install zlib1g-dev

そして再度

sudo pyenv install 3.6.6

にて無事にインストールができた。
あとはpyenvの使い方に従ってglobalで3.6.6が効くようにしたり自分好みに設定すると良い。

yossyA
機械学習と超音波が専門
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした