Да. Django - это обычный Python-модуль, который находится в ваших site-packages . Поэтому, когда вы import django.something
, Python решает, какую версию загружать, идя по пути Python (import sys; print sys.path
) по порядку и ища каталог с именем django (с thing.py или * 1007). * что-то / _ init _. py внутри). Он загружает первый найденный. Поэтому самый быстрый способ - изменить этот путь Python перед началом проекта, что удобно сделать с помощью переменной среды с именем PYTHONPATH.
Итак, для вашего проекта Django 1.2 установите Django 1.2 в site-packages / django-1.2, а затем:
# run Django 1.2 for old app that I don't have time to update
cd ~gaearon/src/old-django-project
env PYTHONPATH=/Library/Python/2.6/site-packages/django-1.2 ./manage.py runserver
Для всех других (Django 1.3) проектов просто установите Django как обычно, что делает его по умолчанию:
# all other projects use the system default Django 1.3
cd ~gaearon/src/current-django-project
./manage.py runserver
Для производственных серверов вы не будете использовать runserver, но PYTHONPATH будет работать везде, где вы вызываете Python (то есть, flup или manage.py runfcgi). Если вызывается из mod_python, существует директива конфигурации Apache для изменения пути Python (см. Документацию mod_python).
Или вы можете использовать virtualenv .