mod_wsgi无法作为Python模块加载

时间:2016-06-23 03:25:12

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

我正在尝试使用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()

有人能弄明白我做错了什么吗?

2 个答案:

答案 0 :(得分:2)

Python/2.6.6 configured -- resuming normal operations

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

答案 1 :(得分:1)

你的wsgi.py第9行必须是

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

如果存储的目录称为团队合作(您的项目名称)

也在您的manage.py中,它必须是“teamwork.settings”