【问题标题】:System-wide Django package overrides virtualenv in mod_wsgi系统范围的 Django 包覆盖 mod_wsgi 中的 virtualenv
【发布时间】:2014-09-24 19:25:03
【问题描述】:

我正在尝试在 mod_wsgi 3.3 (Ubuntu 12.04) 上部署我的 Django 应用程序。它不起作用只是因为(较旧的)系统范围的 Django 版本干扰并覆盖了安装在 virtualenv 中的版本。我已检查卸载系统范围的版本可以解决此问题,但我想要两者兼有。

这是我的配置:

/home/user/project/wsgi.py

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

/etc/apache2/sites-enabled/项目

WSGIScriptAlias /project /home/user/project/wsgi.py
WSGIDaemonProcess project python-path=/home/user/project:/home/user/venv/lib/python2.7/site-packages
WSGIProcessGroup project

<Directory /home/user/project>
    <Files wsgi.py>
        Order deny,allow
        Allow from all
    </Files>
</Directory>

这是我在 /var/log/apache2/error.log 中看到的内容:

[Fri Aug 01 16:02:09 2014] [error] [client 127.0.0.1]   File "/home/user/project/wsgi.py", line 30, in <module>
[Fri Aug 01 16:02:09 2014] [error] [client 127.0.0.1]     from django.core.wsgi import get_wsgi_application
[Fri Aug 01 16:02:09 2014] [error] [client 127.0.0.1] ImportError: No module named wsgi

这是因为全局版本是1.3,没有django.core.wsgi。

virtualenv 版本是 1.7。在 virtualenv 下,Python 会导入正确的 Django 版本。

【问题讨论】:

    标签: django apache virtualenv mod-wsgi


    【解决方案1】:

    对于您使用的 mod_wsgi 版本,您可以说:

    WSGIDaemonProcess project python-home=/home/user/venv python-path=/home/user/project
    

    即使用 WSGIDaemonProcess 的 python-home 选项来指定 Python 虚拟环境的 sys.prefix 值。

    无需在 WSGI 脚本文件中摆弄 sys.path。

    【讨论】:

    • 不,它不起作用(Apache 无法启动)。我真的有 mod-wsgi 3.3,我已经检查过了。
    • 我的错,python-home 是在 3.4 中添加的。发行版仍然使用旧版本。当时最新的是 4.2.X。
    【解决方案2】:

    你没有在 wsgi 文件中激活你的 virtualenv,所以 Python 对此一无所知。

    【讨论】:

    • 我找不到任何关于从 Python 激活 virtualenv 的信息。我总是从外壳做。根据我的阅读,WSGIDaemonProcess 中的 python-path 参数应该足够了。它可以工作,除非全局安装旧的 Django。
    • 我听从了code.google.com/p/modwsgi/wiki/VirtualEnvironments 的建议,重新排序了 sys.path,它似​​乎有效。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 2019-11-11
    • 1970-01-01
    • 2020-01-04
    • 2012-07-28
    • 2017-02-18
    相关资源
    最近更新 更多