【Python】CentOSにpyenvをインストールする方法

こんにちは、nishi_talk(@nishi_talk)です。
今回はCentOSにpyenvをインストールする方法をご紹介します。

pyenvをインストールした環境

ローカルの開発環境として、vagrantを使用。
仮想環境の中にCentOSをインストール済み。
gitがインストール済み。
仮想環境を立ち上げて、vagrnatt sshで接続。

pythonのバージョン管理ツールpyenvをクローン

まずはpyenvのgitをクローンします。
$ git clone https://github.com/yyuu/pyenv.git ~/.pyenv
ディレクトリを移動をして、.bash_profileにPAHTを通します。
$ cd
$ vim .bash_profile
vimが開いたら、以下の記述を追加。
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
記述したら、:wqでvimを終了。

コンパイルに必要なパッケージをインストール

Pythonのコンパイルに必要なパッケージをインストールを先にインストールします。

CentOS7にインストールする場合

$ sudo yum install gcc bzip2 bzip2-devel openssl openssl-devel readline readline-devel

Ubuntuにインストールする場合

$ sudo apt-get install git gcc make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev
詳細の設定やその他設定は以下のwikiを参考にします。
githubのwiki

pyenvをインストール

pyenvでインストールするPythonのバージョンを確認します。
※今回は3.6.4をインストール。
$ pyenv install --list
$ pyenv install 3.6.4
エラーが出た。
$ pyenv install 3.6.4
Downloading Python-3.6.4.tar.xz...
-> https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
Installing Python-3.6.4...
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
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 (CentOS 7.4.1708 using python-build 1.2.2-14-gb95d0d9)
・
・
・
なにやら、bzip2readlineOpenSSLが無いよー的なエラーっぽい。
詳しくは、wikiを見てって言われてたのwikiを確認。
$ yum install zlib-devel bzip2 bzip2-devel readline-devel sqlite sqlite-devel openssl-devel xz xz-devel
インストール完了したら、再度Pythonをインストール。
$ pyenv install 3.6.4
Downloading Python-3.6.4.tar.xz...
-> https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
Installing Python-3.6.4...
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
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 (CentOS 7.4.1708 using python-build 1.2.2-14-gb95d0d9)
・
・
・
また、同じエラーが・・・
もう一度wikiで確認。
macOSへの設定をする以下のコマンドを試しに入力したらパッケージがインストールされたっぽい。
$ brew install readline openssl xz
再再度Pythonをインストール。
$ pyenv install 3.6.4
Downloading Python-3.6.4.tar.xz...
-> https://www.python.org/ftp/python/3.6.4/Python-3.6.4.tar.xz
Installing Python-3.6.4...
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 (CentOS 7.4.1708 using python-build 1.2.2-14-gb95d0d9)
・
・
・
このエラーだけ消えない。
ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?
再度wikiで確認。
「ERROR: The Python ssl extension was not compiled. Missing the OpenSSL lib?」の箇所があるので、そのまま実行。
CFLAGS="-I$(brew --prefix openssl)/include" \
LDFLAGS="-L$(brew --prefix openssl)/lib" \
pyenv install -v 3.6.4
まだ、エラーが出る場合は、対象のパッケージをアンインストールしてインストールし直すとうまくいくっぽい。
$ brew uninstall openssl
$ brew install openssl
インストールできたか、バージョンを確認。
$ pyenv versions
3.6.4
バージョンが表示されたらOK。

Pythonのバージョンを設定

$ pyenv global 3.6.4
$ pyenv rehash
$ pyenv versions
今回インストールした、3.6.4に*がついてれば設定完了です。