プロジェクトごとに異なるバージョンのDjangoを使う

勉強会でも質問があったので書いておきます。
プロジェクトごとに異なるバージョンのDjangoを使いたいときはどうするか。
とても簡単。
プロジェクトディレクトリに、使いたいバージョンのdjangoをそのままコピー(もしくはシンボリックリンクを作成)するだけです。
Pythonがモジュールをロードするときに参照するディレクトリの順番を考えたらこれでokだという。
結局、Djangoはインストールしなくてもコピーするだけで動くという話でもあります。
バージョンを表示するだけのプロジェクトを作って確認してみた。
views.pyはこんな感じ。

from django.core.management import get_version
from django.http import HttpResponse

def index(request):
    return HttpResponse(get_version())


SVN版がインストールされているので、SVN版のバージョンが表示される。

0.96.1のdjangoをプロジェクトディレクトリに置いて開発サーバを再起動。

0.96.1になった。

ソース

switchversion.zip

2012/04/20追記

複数バージョンの共存方法を検索してこのページに辿りついてる人がいるっぽいので追記。
今だとvirtualenvやbuildoutを使ってプロジェクトごとの環境を作るのが無難です。