我有一个Django应用程序,我一直在使用manage.py runserver进行调试。
我现在正试图用apache / mod_wsgi来提供它。
当我尝试打开主页时,我收到500错误。日志文件在functools.py中显示语法错误。
mod_wsgi (pid=28016): Target WSGI script '/home/username/projects/django/testing/testing/wsgi.py' cannot be loaded as Python module.
mod_wsgi (pid=28016): Exception occurred processing WSGI script '/home/username/projects/django/testing/testing/wsgi.py'.
Traceback (most recent call last):
File "/home/username/projects/django/testing/testing/wsgi.py", line 12, in <module>
from django.core.wsgi import get_wsgi_application
File "/home/username/.virtualenvs/testing/lib/python3.4/site-packages/django/__init__.py", line 1, in <module>
from django.utils.version import get_version
File "/home/username/.virtualenvs/testing/lib/python3.4/site-packages/django/utils/version.py", line 7, in <module>
from django.utils.lru_cache import lru_cache
File "/home/username/.virtualenvs/testing/lib/python3.4/site-packages/django/utils/lru_cache.py", line 2, in <module>
from functools import lru_cache
File "/home/username/.virtualenvs/testing/lib/python3.4/functools.py", line 291
cls_or_self, *rest = args
^
SyntaxError: invalid syntax
据我所知,这是有效的python3.4语法。所以我不完全确定我是否正确配置WSGI以使用我的virtualenv。
#testing.conf
<VirtualHost *:80>
WSGIDaemonProcess django.testing.username.vni user=username group=username python-path=/home/username/.virtualenvs/testing/lib/python3.4/site-packages:/home/username/.virtualenvs/testing/lib/python3.4:/home/username/.virtualenvs/testing
WSGIProcessGroup django.testing.username.vni
WSGIScriptAlias / /home/username/projects/django/testing/testing/wsgi.py
ServerAdmin username@webserver.com
ServerName django.testing
ServerAlias www.django.testing
Alias /static/ /home/username/projects/django/testing/static/
<Directory />
AllowOverride None
Options -Indexes
</Directory>
<Directory /home/username/projects/django/testing/testing>
<Files wsgi.py>
Require all granted
</Files>
</Directory>
ErrorLog /var/log/apache2/django.testing.log
LogLevel warn
</VirtualHost>
我想我上面可能有一个有问题的python路径。
#wsgi.py
import os
from django.core.wsgi import get_wsgi_application
import sys
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/..")
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
#os.environ.setdefault("DJANGO_SETTINGS_MODULE", "testing.settings")
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
application = get_wsgi_application()
我不确定我是否正确处理了sys.path.append()或者DJANGO_SETTINGS_MODULE。他们就是为了解决我遇到的其他一些错误。
答案 0 :(得分:3)
正如Daniel Roseman所说,问题是我的python3.4的mod_wsgi版本错误。我删除了libapache2-mod-wsgi并安装了libapache2-mod-wsgi-py3。