MacでのPython開発環境を整理してみる

PythonでのWebサービスの開発、Google App Engineの開発などをしている中で、環境がごちゃごちゃしてきました。そこで、ちょっと環境整理します。方針としては、gaeの開発は2.5をベースに自由にできる別環境を作るという感じです。今後、Python3系も入れることも頭の片隅に入れておきたいとおもいます。
今回の作業では、"http://labs.unoh.net/2007/04/python.html"を参考にさせて頂きました。

レシピ

  • virtual-pythonでpython2.5の新しい環境を作る
  • sitecustomize.pyを設定する
  • 環境設定用のシェルを用意する
  • easy_installをインストールする
  • PILをインストールする

virtual-pythonでpython2.5の新しい環境を作る

gae用のpython2.5環境は、ユーザディレクトリ配下の~/opt/gaeenvというディレクトリに置くことにします。
virtual-python.pyを取得して、それを使って新しい環境を作ります。

mkdir ~/opt/gaeenv
cd ~/opt/gaeenv
wget http://peak.telecommunity.com/dist/virtual-python.py
python2.5 virtual-python.py --prefix=~/opt/gaeenv --no-site-packages

sitecustomize.pyを設定する

デフォルトエンコーディングUTF-8にしておきたいため、sitecustomize.pyを作成して配置します。
ただし、site-packagesディレクトリはデフォルトではPYTHONPATHに入っていないようなので、自分で追加する必要がありそうです。その作業は次の作業でおこないます。

vim ~/opt/gaeenv/lib/python2.5/site-packages/sitecustomize.py
import sys
sys.setdefaultencoding('utf-8')

環境設定用のシェルを用意する

この作成した環境は必要な時に使えればよいと考えているため、環境変数のメンテをシェルで呼び出しておこなう形にします。そのため、それようのファイルを作成して配置します。やることは、PATHへのパス追加とPYTHONPATHの追加です。

vim ~/opt/gaeenv/setupenv.sh
# 呼び出す場合
source setupenv.sh
PWD=`pwd`
export PWD

export PATH="$PWD/bin:$PATH"
echo "Updated PATH->$PATH"

export PYTHONPATH="$PWD/lib/python2.5/site-packages"
echo "Added PYTHONPATH->$PYTHONPATH"

easy_installをインストールする

上記で作成したシェルを使用してpythonをgaeenvのものにしてから作業をおこないます。
ez_setup.pyを取得して、それを使ってeasy_installをインストールします。

source setupenv.sh
wget http://peak.telecommunity.com/dist/ez_setup.py
python ez_setup.py --prefix=~/opt/gaeenv/ setuptools

PILをインストールする

gaeにて画像系の処理をおこなうために、PILをインストールしておきます。easy_installを使用してPILをインストールします。easy_installのバージョン指定の話は、"Google グループ"を参考にさせて頂きました。

easy_install --prefix=~/opt/gaeenv/ "pil==1.1.6"
# 1.1.6インストールできませんでした。。。

仕方が無いので、easy_installでのインストールは諦めてソースからインストールすることにします。

wget http://effbot.org/downloads/Imaging-1.1.6.tar.gz
tar zxvf Imaging-1.1.6.tar.gz
cd Imaging-1.1.6
python setup.py build
python setup.py install --prefix=~/opt/gaeenv

余談ですが、PILとlibjpegのバージョンの組み合わせを合わせておかないと、開発用サーバ起動時にワーニングがでてしまします。そのため、libjpegのバージョン6をインストールしました。

wget http://sourceforge.net/projects/libjpeg/files/libjpeg/6b/jpegsrc.v6b.tar.gz/download
tar zxvf jpegsrc.v6b.tar.gz
cd jpeg-6b
./configure --prefix=~/opt/gaeenv
make
make install

また、インストール先を~/opt/gaeenvとしたため、libディレクトリへのパスが追加されていません。そのため、setupenv.shにLD_LIBRARY_PATHを設定します。

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$PWD/lib"
echo "Updated LD_LIBRARY_PATH->$LD_LIBRARY_PATH"