CentOS 7に最新版Pythonを導入する(pyenv)
想定環境
- OS:CentOS 7.3.1611 64bit
pyenvについて
CentOS 7.xに最初から入っているPythonは2.x系です。 できれば新しめのPythonを使いたいので、pyenvを使って導入します。
pyenvはRubyで言うところのrbenvで、複数バージョンのPythonをインストール・切り替えできるようにするツールのようです。
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-dev
と pyenv rehash
すれば、Python 3.7.0a が利用できるようになります。