おかゆ++

IT業界の片隅で生き残るブログ

CentOS 7に最新版Pythonを導入する(pyenv)

想定環境

pyenvについて

CentOS 7.xに最初から入っているPythonは2.x系です。 できれば新しめのPythonを使いたいので、pyenvを使って導入します。

pyenvはRubyで言うところのrbenvで、複数バージョンのPythonをインストール・切り替えできるようにするツールのようです。

github.com

This project was forked from rbenv and ruby-build, and modified for Python.

rbenvからフォークしたって書いてますね。そりゃ似てるわけです。というわけで、rbenvを使っている方はそれとほぼ同じなので、さらっと流し読みしてください。

依存関係をインストールしておく

おそらくこのあたりを入れておけば問題ないはずです。

$ sudo yum -y groupinstall "Development Tools"
$ sudo yum -y install readline-devel zlib-devel bzip2-devel sqlite-devel openssl-devel libXext.x86_64 
libSM.x86_64 libXrender.x86_64 gcc gcc-c++ libffi-devel python-devel

pyenvのインストール

今回は全ユーザに対して導入したいので、pyenv自体の配置場所は /usr/local/pyenv にします。

まずはGitHubからpyenvをクローンしてきます。

$ git clone https://github.com/yyuu/pyenv.git /usr/local/pyenv

シェルの起動時にpyenvを初期化するように設定します。 /etc/profile とかでもいいですが、CentOS 7では /etc/profile.d/ 配下のスクリプトが自動実行されるようになってるようなので、ここに新しく /etc/profile.d/pyenv.sh を作ります。

$ vim /etc/profile.d/pyenv.sh
# pyenv.shの中身には以下のように記載
export PYENV_ROOT="/usr/local/pyenv"
export PATH="${PYENV_ROOT}/bin:${PATH}"
eval "$(pyenv init -)"

$ source /etc/profile.d/pyenv.sh

これでログイン時に自動読み込みするようになります。今は再ログインも面倒なので、source で実行しておきます。

以上でpyenvの導入は完了です。

pyenvでPythonを導入する

pyenvを用いて最新版のPythonを導入します。

最初に現状のPythonのバージョンを確認してみます。

$ python --version
Python 2.7.x

最終目的はここで最新版のPythonが表示されることです。

まずはpyenvで導入可能なPythonのバージョン一覧を確認します。

$ pyenv install --list
Available versions:
  2.1.3
  2.2.3
  2.3.7
  ...
  3.6.1
  3.6.2
  3.7-dev
  anaconda-1.4.0
  anaconda-1.5.0
  ...

anacondaやpypyなども表示されますが、ただの数字だけのものが通常のPython(CPythonとか呼ぶんだったでしょうか)になります。 3.7の開発版か3.6.2が候補になりそうですね。今回は3.6.2を導入することにします。

以下のコマンドで、Python 3.6.2のダウンロードとインストールが実施されます。ちょっと時間がかかるかもしれません。(コンパイルとかしてるんですかね)

$ pyenv install 3.6.2
Cloning https://github.com/python/cpython...

Installing Python-3.6.2...
Installed Python-3.6.2 to /usr/local/pyenv/versions/3.6.2

バージョンの切り替え

Pythonのインストールまでは完了しましたが、利用するPythonのバージョンを指定していないので、まだ切り替わっていません。

以下の操作で、Python 3.6.2 を利用するように指定します。

$ pyenv global 3.6.2
$ pyenv rehash

Pythonのバージョンを確認します。

$ python --version
Python 3.6.2

めでたく最新版のPythonを利用できる環境になりました。

他のバージョンに切り替えるには

今はPython 3.6.2しかインストールしていませんが、pyenv install 3.7-dev のようにして別バージョンのインストールも可能です。

その状態で pyenv global 3.7-devpyenv rehash すれば、Python 3.7.0a が利用できるようになります。