Djangoのバージョンを切り替えて使う〜chdjangoの導入

Djangoのバージョンを切り替えながら使う方法。この記事ではインストールされているDjangoのバージョンをまるごと変えてしまう方法です。プロジェクトごとにDjangoのバージョンを切り替えるならプロジェクトごとに異なるバージョンのDjangoを使う - 偏った言語信者の垂れ流しを読むと良いと思います。
ここではchdjango.pyを使うので、それの導入方法を主に書きます。

導入

chdjango.pyはdjangosnippets: chdjangoにあるので、これをシェルのパスが通ったところに置きます。(私の場合は /usr/local/bin に置きました)

cd /usr/local/bin
wget -O chdjango.py http://djangosnippets.org/snippets/641/download/

こんな感じでよいと思います。
chdjango.pyは ~/django から、引数で指定されたディレクトリをPythonのパスに通してくれます。具体的には

~
`-django
    |-- 1.3.1
    |   `-- django
    `-- 1.4b1
         `-- django

こんな感じにしておいて。

chdjango.py 1.3.1

このように実行します。もちろん予めDjangoがインストールされている場合は消しておく必要あると思います。

ハマりどころ

1つめは、バージョン番号のディレクトリ以下に直接 django の中身をおくのではなくて、ちゃんと django というディレクトリごと置くということです。そうでないと例えば import django.core が import core になってしまいます。

2点目は、chdjango.py は site-package に django.pth というファイルを置いてくれるのですが、この site-packages は os.pyc と同じディレクトリから探されるので、これにパスが通ってなかったり、存在しないとうまくいきません。私の場合は面倒なので chdjango.py を書き換えて dist-packages に django.pth を置くようにしました。

おわりに

なんでインストールされてるDjangoのバージョンをまるごと変えたいかと言うと、startprojectなどの挙動がバージョンごとに違う場合があるからです。たとえば 1.4 でプロジェクトディレクトリのレイアウトが変わったので、その点を試したりする場合にこの chdjango.py を使う方法が必要になると思います。