Django,有可能运行两个不同的版本?

时间:2009-11-24 10:50:13

标签: python django hosting shared-hosting

我有一个服务器,我有两个用Django和Python构建的网站,一个网站是主要网站用旧版本的django构建,另一个用新版本,我已升级到新版本和主要方面我的其他网站已经坏了,是否有可能告诉网站使用不同的版本说python路径?在虚拟主机?

我迫切需要帮助!

更多信息,它是在linux和服务器上的用户mod python,这是我正在尝试的vitrualhost

<Location "/">
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE website.settings
        SetEnv PYTHON_EGG_CACHE /var/cache/pyeggcache
        SetEnv PYTHONPATH "sys.path + ['usr/lib/python2.6/site-packages/django2']"
        PythonDebug On
        PythonPath "['/var/www/website_live/src'] + ['/var/www/webiste_live/src/website'] + sys.path"
    </Location>

我已将网站名称替换为“网站”我的单独版本的django位于/usr/lib/python2.6/site-packages/django2

5 个答案:

答案 0 :(得分:6)

如果服务器上有多个网站,则应考虑使用virtualenv之类的内容。

使用它可以设置不同的虚拟环境,并在此处放置特定于站点的软件包,而不是弄乱您的站点包文件夹。它还使开发变得更加容易,因为您可以使用您使用的特定版本轻松地在本地设置这些环境。

如果您使用其他应用程序,这很快就会变得非常方便,这是Pinax非常重视的。处理包和版本的最简单方法就是创建一个需求文件。

答案 1 :(得分:5)

是的,你可以。我已在here上详细介绍了这一点。

答案 2 :(得分:1)

当然是,但它需要一点点雏鸟。这主要取决于您使用的服务器。

关键是$ PYTHONPATH。这个变量存储,Python寻找要嵌入的模块。如果你使用

import django.conf

它真实地查看$ PYTHONPATH中的所有目录,并搜索名为django的文件夹。

所以关键是要根据请求的去向来操纵$ PYTHONPATH。如果您碰巧使用mod_python和Apache,它可能如下所示:

<VirtualHost *:80>
    DocumentRoot "/var/htdocs/old_django_project"
    ServerName old-django
    PythonPath "sys.path + ['/var/software/old_django']"
</VirtualHost>

<VirtualHost *:80>
    DocumentRoot "/var/htdocs/new_django_project"
    ServerName new-django
    PythonPath "sys.path + ['/var/software/new_django']"
</VirtualHost>

然后,访问http://old-django/会带您到旧的django实例,以及新的django实例。

答案 3 :(得分:0)

这是可能的,但根据我对使用Django和Python的不同版本的环境的体验,它往往会变得混乱,特别是如果您有多个开发人员在处理这些项目。然后,每个开发人员都需要维护两个版本的Django,并记住它们能够和不能使用哪些功能。

答案 4 :(得分:0)

我使用Wigwam来做这类事情。这是一个严厉的方法 - 每个Apahce,Python,Django等都有一个单独的构建 - 但是它运行得很好。