Python Django,可以运行两个不同的版本吗?

Python Django,可以运行两个不同的版本吗?,python,django,hosting,shared-hosting,Python,Django,Hosting,Shared Hosting,我有一个服务器,上面有两个用Django和Python构建的站点,一个是用Django的旧版本构建的主要站点,另一个是用较新版本构建的,我已经升级到新版本,我的其他站点的主要方面已经损坏,是否可以告诉该站点在Python路径中使用不同的版本?在虚拟主机中 我迫切需要帮助 更多信息,它在linux和服务器用户mod python上,下面是我正在使用vitrualhost进行的尝试 <Location "/"> SetHandler python-program

我有一个服务器,上面有两个用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>

SetHandler python程序
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_设置_模块网站.SETTINGS
SetEnv PYTHON_EGG_CACHE/var/CACHE/pyeggcache
SetEnv PYTHONPATH“sys.path+['usr/lib/python2.6/site packages/django2']”
蟒蛇
PythonPath“['/var/www/website_live/src']+['/var/www/webiste_live/src/website']+sys.path”

我已将网站名称替换为“网站”,我的django独立版本位于/usr/lib/python2.6/site packages/django2,当然是,但它需要一些嵌套。这主要取决于您使用的服务器

关键点是$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>

DocumentRoot“/var/htdocs/old_django_项目”
服务器名old django
PythonPath“sys.path+['/var/software/old_django']”
DocumentRoot“/var/htdocs/new_django_项目”
ServerName新django
PythonPath“sys.path+['/var/software/new_django']”

然后,访问
http://old-django/
将您带到旧的django实例,新的django实例也是如此。

是的,您可以。我已经在博客上详细讨论了这一点。

这是可能的,但根据我的经验,在一个使用不同版本Django和Python的环境中,结果往往会变得一团糟,特别是当您有多个开发人员在处理项目时。每一个开发人员都需要维护两个版本的Django,并记住它们可以使用和不能使用的特性。

< P>当服务器上有一个以上站点时,您应该考虑使用类似的。

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


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

我用它来处理这类事情。这是一种繁重的方法——Apahce、Python、Django等都有单独的构建——但它工作得相当好。

您肯定可以同时使用两个不同的版本。但要回答这个问题,我们需要知道您使用的是什么软件:apache、nginx、mod_python或mod_wsgi。我发现,通过使用virtualenv和pip(并将其需求文件存储在我的代码库中),维护几乎不成问题。这可能是最好、最简单的方法。如果您在本地遵循相同的设置,它也会使开发变得更加容易。