【问题标题】:mod_wsgi cannot be loaded as Python modulemod_wsgi 不能作为 Python 模块加载
【发布时间】:2016-10-25 04:59:12
【问题描述】:

我正在尝试使用 apache 访问 Django 应用程序,但出现内部服务器错误。我打开了日志看看发生了什么,我发现了这个:

[Thu Jun 23 03:10:03 2016] [notice] suEXEC mechanism enabled (wrapper:  /usr/sbin/suexec)
[Thu Jun 23 03:10:03 2016] [notice] Digest: generating secret for digest authentication ...
[Thu Jun 23 03:10:03 2016] [notice] Digest: done
[Thu Jun 23 03:10:03 2016] [notice] Apache/2.2.15 (Unix) DAV/2 mod_wsgi/3.2    Python/2.6.6 configured -- resuming normal operations
[Thu Jun 23 03:10:10 2016] [error] [client 197.41.248.175] mod_wsgi (pid=5612): Target WSGI script '/home/TaskManagement/teamwork/wsgi.py' cannot be loaded as Python module.
[Thu Jun 23 03:10:10 2016] [error] [client 197.41.248.175] mod_wsgi (pid=5612): Exception occurred processing WSGI script '/home/TaskManagement/teamwork/wsgi.py'.
[Thu Jun 23 03:10:10 2016] [error] [client 197.41.248.175] Traceback (most recent call last):
[Thu Jun 23 03:10:10 2016] [error] [client 197.41.248.175]   File "/home/TaskManagement/teamwork/wsgi.py", line 15, in <module>
[Thu Jun 23 03:10:10 2016] [error] [client 197.41.248.175]     from django.core.wsgi import get_wsgi_application
[Thu Jun 23 03:10:10 2016] [error] [client 197.41.248.175]   File "/home/py3venv/lib/python3.4/site-packages/django/__init__.py", line 1, in <module>
[Thu Jun 23 03:10:10 2016] [error] [client 197.41.248.175]     from django.utils.version import get_version
[Thu Jun 23 03:10:10 2016] [error] [client 197.41.248.175]   File "/home/py3venv/lib/python3.4/site-packages/django/utils/version.py", line 7, in <module>
[Thu Jun 23 03:10:10 2016] [error] [client 197.41.248.175]     from django.utils.lru_cache import lru_cache
[Thu Jun 23 03:10:10 2016] [error] [client 197.41.248.175]   File "/home/py3venv/lib/python3.4/site-packages/django/utils/lru_cache.py", line 28
[Thu Jun 23 03:10:10 2016] [error] [client 197.41.248.175]      fasttypes = {int, str, frozenset, type(None)},
[Thu Jun 23 03:10:10 2016] [error] [client 197.41.248.175]                      ^
[Thu Jun 23 03:10:10 2016] [error] [client 197.41.248.175]  SyntaxError: invalid syntax

我正在使用 python 3.4、Django 1.9、apache 2.2。 这是我的 apache 配置:

WSGISocketPrefix /var/run/wsgi
WSGIScriptAlias / /home/TaskManagement/teamwork/wsgi.py process-group=hrm.jodod.info
WSGIDaemonProcess hrm.jodod.info python-path=/home/TaskManagement:/home/py3venv/lib/python3.4/site-packages
WSGIProcessGroup hrm.jodod.info

Alias /robots.txt /home/TaskManagement/robots.txt
Alias /favicon.ico /home/TaskManagement/favicon.ico
Alias /static/ /home/TaskManagement/static/

<Directory /path/to/mysite.com/static>
Order deny,allow
Allow from all
</Directory>

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

这是我的 wsgi.py 文件:

import os
import sys

sys.path.append('/home/TaskManagement')
sys.path.append('/home/TaskManagement/teamwork')
from django.core.wsgi import get_wsgi_application

os.environ["DJANGO_SETTINGS_MODULE"] = "{{ project_name }}.settings"
application = get_wsgi_application()

谁能弄清楚我做错了什么?

【问题讨论】:

    标签: django apache python-3.x mod-wsgi


    【解决方案1】:
    Python/2.6.6 configured -- resuming normal operations
    

    看起来您的 mod_wsgi 是针对 Python 2.6.6 编译的,并且您正在尝试使用它运行 Python3 代码。您在 Py3 中出现的错误中看到的 Set syntax。重新编译 mod_wsgi 并重试。

    【讨论】:

    • 这就是问题所在。我必须安装 mod_wsgi 的源代码并针对 python 3.4 编译它并且它工作。
    【解决方案2】:

    你的 wsgi.py 第 9 行必须是

    os.environ["DJANGO_SETTINGS_MODULE"] = "teamwork.settings" 
    

    如果它存储的目录称为 teamwork(您的项目的名称)

    在你的 manage.py 中也必须是“teamwork.settings”

    【讨论】:

    • 你不能在 python 文件中使用 Django 的模板语法
    猜你喜欢
    • 2017-10-13
    • 1970-01-01
    • 2017-03-16
    • 1970-01-01
    • 2020-09-09
    • 2020-05-17
    • 2018-04-01
    • 1970-01-01
    相关资源
    最近更新 更多