有没有一种方法可以并排安装Django 1.2和1.3?

问题描述

| 我需要为我的项目之一使用Django 1.2。 我已经在同一服务器上的Django 1.3上运行了多个项目,我需要保持它们的运行状态。 有没有一种方法只能将1.2用于特定项目? 这两个站点都通过mod_wsgi在Apache上运行。     

解决方法

        考虑在virtualenv中安装Django。这将使python模块(包括Django)的安装完全独立于系统的其余部分。这样,如果您有多个virtualenv,则可以安装尽可能多的Django版本(每个环境一个)。 要使用virtualenv,您需要编辑ѭ0并在导入或引用Django的任何其他行之前添加以下两行:
activate_this = \'/path/to/env/bin/activate_this.py\'
execfile(activate_this,dict(__file__=activate_this))
这是假设您没有使用不同版本的python解释器本身,使用virtualenv可以实现,但是会使事情变得更加复杂。     ,        是。 Django只是生活在您的站点包中的常规Python模块。因此,当您使用
import django.something
时,Python决定要加载哪个版本的方法是依次浏览Python路径(ѭ3walking)并查找一个名为django的目录(内部含something.py或something / _init_.py)。它加载找到的第一个。因此,最快的方法是在启动项目之前修改此Python路径,这可以通过名为PYTHONPATH的环境变量方便地完成。 因此,对于您的Django 1.2项目,请在site-packages / django-1.2中安装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。     ,        当我需要做这样的事情时,我发现将virtualenv与virtualenvwrapper结合使用对您很有帮助。
> mkvirtualenv django1.2
> cd django-1.2-dist-dir
> python setup.py install 
> mkvirtualenv django1.3
> cd django-1.3-dist-dir
> python setup.py install 
现在,两个Django版本都安装在各自的虚拟环境中。要使用特定的方法,请执行以下操作:
> workon django1.2
要么
> workon django1.3