想定環境
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を導入します。
最初に現状の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-dev
と pyenv rehash
すれば、Python 3.7.0a が利用できるようになります。