【问题标题】:Django, is possible to run two different versions?Django,可以运行两个不同的版本吗?
【发布时间】: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。

标签: python django hosting shared-hosting


【解决方案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 等都有一个单独的构建——但效果很好。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-16
        • 1970-01-01
        • 2017-12-30
        • 2014-03-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多