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

【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に*がついてれば設定完了です。