python - 目标 WSGI 脚本无法作为 Python 模块加载

标签 python django apache mod-wsgi wsgi

我正在尝试使用 apache 部署 mod_wsgi 以运行 django 应用程序,但我收到错误 500 internal server error apache 日志显示:

[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] mod_wsgi (pid=16142): Exception occurred processing WSGI script '/home/user/bms/apache/django.wsgi'.
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] Traceback (most recent call last):
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64]   File "/home/user/bms/apache/django.wsgi", line 13, in <module>
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64]     import django.core.handlers.wsgi
[Thu Jun 23 14:01:47 2011] [error] [client 152.78.95.64] ImportError: No module named django.core.handlers.wsgi

我的apache虚拟主机如下:

<VirtualHost *:80>

    DocumentRoot /home/user/bms

    <Directory /home/user/bms>
        Order allow,deny
        Allow from all
    </Directory>

WSGIDaemonProcess bms user=user group=user processes=2 threads=25 python-path=/usr/local/lib/python2.7/site-packages


    WSGIProcessGroup bms

    WSGIScriptAlias / /home/user/bms/apache/django.wsgi

</VirtualHost>

并且在我的应用目录中引用的wsgi文件具有0777权限:

import os
import sys

path = '/home/user/bms'
if path not in sys.path:
    sys.path.append(path)

os.environ['DJANGO_SETTINGS_MODULE'] = 'bms.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

听说这可能是因为apache用户没有正确的权限。但是我不知道如何解决这个问题。我还尝试使用 www-data 用户启动守护程序,但这并没有解决问题。

编辑:

我通过将虚拟主机文件复制到默认文件中来解决这个问题,然后使用 a2dissite 禁用旧文件。我不知道如何“正确”完成并设置它,以便 apache 转到我想要的虚拟主机。

最佳答案

对我来说,问题是 wsgi python 版本不匹配。我使用的是 python 3,所以:

$ sudo apt-get remove libapache2-mod-python libapache2-mod-wsgi
$ sudo apt-get install libapache2-mod-wsgi-py3

来自@alxs 的警告在复制/粘贴之前这些命令:
如果服务器上运行着使用 wsgi 和 apache 的 python 2 项目,上述命令将有效地关闭它们。

关于python - 目标 WSGI 脚本无法作为 Python 模块加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6454564/

相关文章:

python - 如何获取 python 模块的路径(不是 sys.executable )

python - 基于Python的cmd模块创建交互式shell的自动化测试

javascript - 图形 map 对象表示网站

apache - 当url包含特殊字符时如何重定向错误页面?

php - 是否可以在执行 PHP 脚本的每一行后运行 PHP 函数?

python - 如何在 Tornado 中设置 'secure' 和 'httponly' cookie?

python - Apache Beam - 澄清 Python SDK 上输出类型提示的预期行为

python - Django:顶级项目文件夹 = root(好听的短名称),非顶级项目文件夹 = ? (需要好听的短名)

javascript - 刷新变量javascript的值

apache - 重写规则以从 Rails 服务器的 URL 隐藏端口?