virtualenvでPython環境をわがままに。

 特に銘打ってませんけど、さくらのレンタルサーバへ移行シリーズです。が、別にさくらオリジナル的な事は全くないので普通です普通です。

 さて、ご存知の方はご存知、このページはDjango(Django | The Web framework for perfectionists with deadlines)というPython製のWebアプリケーションフレームワークを使っていますが、さくらのレンタルサーバさんにはそんなの導入されているはずもありませんので自前で環境を用意して何とかしなければなりません。とは言え、レンタルサーバですからroot権限をいただけるわけもなく、そのままでは勝手にライブラリをインストールするなんて事もできません。そんな時どうするかというと、普通にホームディレクトリにPythonをインストールしてしまえばいいわけですけど、今回はそれに加えてvirtualenvを使って複数の環境も持てるようにしました。あ、実際はPythonをインストールはしませんでしたけど。

 とりあえずお借りしたサーバにログインして環境を調べてみましたら、

%which python
/usr/local/bin/python
%python --version
Python 2.7.2

 という事でありまして、まぁ、普通に丁度最新の2.7環境が入っておりました。Dreamhostさんの時はちょっと古めのPythonがインストールされていたのでPythonからインストールしましたが、これでいいやと、いやこれがいいやと。一手間省けた。

 次は仮想化的にPython環境を構築する為にvirtualenvを導入します。このvirtualenvを使ってホームディレクトリ内に自前のPython環境を欲しいままにわがままに作ります。

 virtualenv 1.7.1.2 : Python Package Index

 からダウンロードして適当なところへ解凍します。解凍先のディレクトリに含まれるvirtualenv.pyを使って、まずは普段使いの基本となる環境を作りますよ。

$ mkdir ~/.virtualenvs
$ python virtualenv.py ~/.virtualenvs/default
New python executable in /home/username/.virtualenvs/default/bin/python
Installing setuptools............done.
Installing pip............…done.

 ~/.virtualenvs みたいなディレクトリを指定しているのはいろいろと都合があるのだ、今後の都合が。出力を見てもわかりますが、pip付きなんですね、助かります。あ、pipっていうのはPythonのパッケージ管理システムですよ。いろんなライブラリをこれで管理できます。

 これで普段使い自分用のpythonコマンドを作る事ができたので、もうパスも通してしまいましょう。お使いのシェルのprofileだのなんだのに設定を追加します。私はbashを使っているので.bashrcに以下を追記。

export PYTHONPATH=$HOME/.virtualenvs/default
export PATH=$HOME/.virtualenvs/default/bin:$HOME/local/bin:$PATH

 リログインして動作を確認しますと、

$ which python
/home/username/.virtualenvs/default/bin/python
$ which pip
/home/username/.virtualenvs/default/bin/pip

 いけてます。このままでも複数の環境を作って切り替えたりなんだりできますけども、virtualenvの使い勝手を上げるコマンドを追加してくれる便利なツールがありますので、そちらも導入しておきましょう。

 virtualenvwrapper 3.2 : Python Package Index

 virtualenvにはpip付きで、すでにその環境で利用しているはずですので、

$ pip install virtualenvwrapper
Downloading/unpacking virtualenvwrapper
…

 これでvirtualenvwrapper.shがインストールされましたけども、読み込まないと使えないのでログインする度に読み込むようにまたprofileだのなんだのに追記します。例によって私はbashを使っております。

if [ -f $HOME/.virtualenvs/default/bin/virtualenvwrapper.sh ]; then
  source $HOME/.virtualenvs/default/bin/virtualenvwrapper.sh
fi

 ファイルが存在したら読み込むみたいな親切設計ですね、参考にさせていただいたところが親切だったんだね。ボクなら適当でいいやとかやりかねない。

 virutualenvとvirtualenvwrapperとpipを使う - YAMAGUCHI::weblog

 あとは思うままに環境を作ったり作らなかったり切り替えたり切り替えなかったりして使えばいいと思うよ。上記リンク先とか参考になるんじゃないかな。