Pythonの進化
Pythonは今現在も進化しており、バージョンによってかなり違ってきます。特にPython 3は根本から見直されており、Python 2から大幅に変更されています。
ですからスクリプトをテストするにもどのバージョンで動くのかは重要になってきます。
新規で作るなら新しいほうが将来性があるのですが、古いバージョンで確かめなければならない時もあり、一様に新しければ良いと言うものでもありません。
そこで一つのシステムで複数バージョンの共有環境を作ります。
複数バージョンの共有
複数バージョンの共有は単純にフォルダを分けてもできないことはないのですが、ライブラリや管理ツールなどどこで何に依存しているかわからなくなってしまうためここは、複数バージョンを分離してインストール出来るpythonzとPythonを仮想化して動かせるvirtualenvを使用して複数バージョンを安全に管理したいと思います。現在のシステム環境:
カーネル: Linuxカーネルバージョン: 3.10.0-123.el7.x86_64
ディストリビューション: CentOS 7
システムのPythonバージョン: 2.7.5
virtualenvをインストール
まずvirtualenvをpipでインストールpipが入ってない人はyumかeasy_installで入れてください。
$ sudo easy_install pip
$ sudo pip install virtualenv
ついでにvirtualenvwrapperというvirtualenvを便利に使うためのツールもインストールします。
$ sudo pip install virtualenvwrapper
シェルのスタートアップファイルに以下を追記します。
$ vi ~/.bashrc
export WORKON_HOME=$HOME/.virtualenvs export PROJECT_HOME=$HOME/Develsource /usr/bin/virtualenvwrapper.sh
WORKON_HOMEはそのディレクトリに仮想環境が構築されるという意味です。
PROJECT_HOMEはプロジェクトを作成するときに使用します。
virtualenvwrapperの位置は環境に依存します。
$ which virtualenvwrapper.sh
で位置をたしかめてください。
シェルに反映させてバージョン確認ができれば成功です。
$ virtualenv --version
12.0.5
pythonzのインストール
pythonzはシステムのPythonを元に構築されるのでシステムに2.6以上のPythonと開発ツール、以下の開発ライブラリが必要です。$ sudo yum groupinstall "Development tools"
zlib-devel bzip2-devel openssl-devel readline-devel ncurses-devel sqlite-devel gdbm-devel db4-devel expat-devel libpcap-devel xz-devel pcre-devel
CentOS 7では以下のライブラリが足りなかったので追加してからpythonzのインストールを行います。
$ sudo yum install zlib-devel openssl-devel
pythonzのインストール
$ curl -kL https://raw.github.com/saghul/pythonz/master/pythonz-install | bash
~/.bashrcに以下を書き込み
[[ -s $HOME/.pythonz/etc/bashrc ]] && source $HOME/.pythonz/etc/bashrc
以上でpythonzがhome配下にインストールされますが、PYTHONZ_ROOT=パス のオプションで任意の場所にインストールできます。
ちなみに環境変数は/etc/profile.d/pythonz.sh に書き込まれます。
インストールの確認
$ pythonz version 1.7.0
バージョン別のPythonをインストールするにはバージョンを指定するだけです。
インストール出来るバージョンは以下のコマンドで確認して下さい。
$ pythonz list -a
次は2.7.9 と 3.4.2のバージョンを取り込む例です。
$ pythonz install 2.7.9 3.4.2
少し時間がかかりますがInstalled CPython-(version) successfully.と出れば成功です。
$ pythonz list # Installed Python versions CPython-2.7.9 CPython-3.4.2さて環境は整いましたのでPythonの仮想実行環境を作成しましょう。
mkvirtualenvコマンドで作成しま
-pオプションで使用するバージョンのPythonのパスを、その後ろに作成する仮想環境のディレクトリ名を指定します今回は分かりやすいpython27 python34としました。
&& deactivateは作成すると自動的に仮想環境内に入るため作成のみの場合はdeactivateを指定します。
$ mkvirtualenv -p ~/.pythonz/pythons/CPython-2.7.9/bin/python python27 && deactivate $ mkvirtualenv -p ~/.pythonz/pythons/CPython-3.4.2/bin/python python34 && deactivate $ workon python27 python34
workonコマンドで作成された仮想環境を表示します。
作られた仮想環境はWORKON_HOMEに指定された場所にあります。
$ ls .virtualenvs/ get_env_details postdeactivate postrmvirtualenv premkproject python27 initialize postmkproject preactivate premkvirtualenv python34 postactivate postmkvirtualenv predeactivate prermvirtualenv $ cd .virtualenvs/python34 $ ls bin include lib $ source bin/activate (python34) $ $ python --version Python 3.4.2
仮想環境へはsource コマンドでbinにあるactivateを反映させることで仮想環境内に入ることができます。入っていればシェルプロンプトの前に(仮想環境名)が表示されています。
versionを確かめてみれば確かにシステムと違うバージョンになっています。
これで通常の環境と同じようなPython仮想環境が作成できました。
deactivateコマンドでいつでも仮想環境から抜け出せます。
$ deactivate
$ python --version
Python 2.7.5
これで通常の環境と同じようなPython仮想環境が作成できました。
deactivateコマンドでいつでも仮想環境から抜け出せます。
$ deactivate
$ python --version
Python 2.7.5