Django,可以运行两个不同的版本吗?
Posted
技术标签:
【中文标题】Django,可以运行两个不同的版本吗?【英文标题】:Django, is possible to run two different versions? 【发布时间】:2010-12-19 20:16:01 【问题描述】:我有一个服务器,我有两个用 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
【问题讨论】:
您绝对可以同时使用两个不同的版本。但要回答这个问题,我们需要知道您使用的是什么软件:apache、nginx、mod_python 或 mod_wsgi。 【参考方案1】:当您在服务器上拥有多个站点时,您应该考虑使用virtualenv 之类的东西。
使用它,您可以设置不同的虚拟环境并在其中放置特定于站点的包等,而不是弄乱您的站点包文件夹。它还使开发变得更加容易,因为您可以使用您使用的任何特定版本轻松地在本地设置这些环境。
如果您使用其他应用程序,这很快就会变得非常方便,而这是 Pinax 大量使用的东西。处理包和版本的最简单方法就是创建一个需求文件。
【讨论】:
这可能是最好的,也是最简单的方法。如果您在本地遵循相同的设置,它也会使开发变得更加容易。【参考方案2】:是的,你可以。我已经在here 上详细地写了这篇博文。
【讨论】:
【参考方案3】:当然可以,但是需要一点点的摸索。这主要取决于您使用的服务器。
关键点是 $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 实例也是如此。
【讨论】:
【参考方案4】:这是可能的,但根据我对使用不同版本的 Django 和 Python 的环境的经验,它最终会变得一团糟,特别是如果您有多个开发人员在项目上工作。然后每个开发人员需要维护两个版本的 Django 并记住他们可以使用和不能使用的功能。
【讨论】:
我发现通过使用 virtualenv 和 pip(并将它的需求文件存储在我的代码存储库中)使得维护实际上不是问题。【参考方案5】:我使用Wigwam 处理这类事情。这是一种笨拙的方法——Apahce、Python、Django 等都有一个单独的构建——但效果很好。
【讨论】:
以上是关于Django,可以运行两个不同的版本吗?的主要内容,如果未能解决你的问题,请参考以下文章
我可以从 2 个不同的 apache vhost 提供一个 django 应用程序吗?
具有不同.net版本的多个应用程序可以在同一台服务器机器上运行吗