Pythonは日々新しいものが出ているが、CentOSなどでは若干古い。
最新のOSを使えば良いわけだがそうはならない状況はある。
そこでPythonをインストールするわけだが、
PythonはLinuxの各ディストロで中心的なアプリの動作に関わっており、さすがにぜんぶ入れ替えを行うわけにはいかない。
通常のPythonは2.7を呼び出し、たとえばPython3_4というコマンドを打つことによって最新のPython3.4を呼び出すようにしたい。
Pyenvというpython実行環境をインストールするツールがあるが、それはユーザーごとの実行環境をインストールまでで、
どのユーザーも指定のコマンドを実行することにより新しいPythonを呼び出すということは出来ない。
要件
今までのPythonを壊さないで、新しいPythonをインストールする。(例 Python3_4コマンドで新しいPython3.4を呼び出す。)
どのユーザーでも同じ実行環境を呼び出す『システムワイド性』
検証環境
CentOS 6.5 (vagrant使用)
使うツール
Pyenv
git
手順
Pyenvのインストール
ここで公開されているpyenvのインストールを行えば間違いは無いので、以下割愛
http://qiita.com/yuta_h3/items/2988c4d0811bf8c344c0
ちなみにpyenvをインストールしたディレクトリは
vagrantユーザーという一般ユーザーの
~/.pyenv/
とする
python-buildのインストール
pyenvにはPythonをビルドするためのプラグイン、Python-buildがついてくる。
github経由でインストールすれば必ずついてくるみたいだ。
ただし、そのままだと使えないので、スタンドアローンで使えるようにインストールをする必要がある。
rootユーザーにて実行
cd /home/vagrant/.pyenv/plugins/python-build/ ./install.sh
と実行すると、python-buildコマンドが使用できる
Pythonのインストール
次にPythonのインストールを行う。
rootユーザーにて実行
python-build 3.4.2 -v /usr/local/python3_4
-vオプションをつければ今何の処理中かわかるからお勧め。
つけないとフリーズしてんのかインストールしてんのか解んなく生る。
インストールディレクトリは任意のフォルダにしていいが、被らないように注意。
例では/usr/local/python3_4
次にシンボリックリンクを追加。
rootユーザーにて実行
ln /usr/local/python3_4/bin/python /usr/local/bin/python3_4 -s
Pyenvでインストールするとpipも付いているので、pipのシンボリックリンクも追加しておこう。
rootユーザーにて実行
ln -s /usr/local/python3_4/bin/pip /usr/local/bin/pip3_4
検証
まず、バージョン確認
一般ユーザーにて実行(コメント部分は実行した結果)
python3_4 -V #Python 3.4.2 pip3_4 -V # pip 1.5.6 from /usr/local/python3_4/lib/python3.4/site-packages (python 3.4)
最新のバージョンが表示されたらOK
その次にpipで何かをインストール(例ではウェブマイクロフレームワークflaskで実施)
rootユーザーにて実行
pip3_4 install flask
さらに、pipでインストールしたものをimport(対話環境による実施)
一般ユーザーにて実行(>>部分はpythonの対話モード)
$ python3_4 >> import flask >>
エラー無くimportできれば環境構築完了