Назад | Перейти на главную страницу

Ошибка Apache mod_wsgi

Я следовал этому руководству по настройке django на сервере cpanel (CentOS 5.2) http://toic.org/2010/08/14/django-on-cpanel-with-python2-6-virtualenv-and-mod_wsgi/comment-page-1/#comment-680 Я получаю 500 страниц в настроенном мной домене.

Журнал Apache:

 File "/home/myofirst/virtualenv/lib/python2.6/site-packages/Django-1.2.3-py2.6.egg/django/core/handlers/wsgi.py", line 1, in <module>
 File "/home/myofirst/djangosites/test1.wsgi", line 13, in <module>
 mod_wsgi (pid=20251): Exception occurred processing WSGI script '/home/myofirst/djangosites/test1.wsgi'.
 mod_wsgi (pid=20251): Target WSGI script '/home/myofirst/djangosites/test1.wsgi' cannot be loaded as Python module.

Файл WSGI:

import sys
import site
import os

vepath = '/home/myofirst/virtualenv/lib/python2.6/site-packages'
prev_sys_path = list(sys.path)
site.addsitedir(vepath)
sys.path.append('/home/myofirst/djangosites')
new_sys_path = [p for p in sys.path if p not in prev_sys_path]
for item in new_sys_path:
    sys.path.remove(item)
sys.path[:0] = new_sys_path
from django.core.handlers.wsgi import WSGIHandler
os.environ['DJANGO_SETTINGS_MODULE'] = 'test1.settings'
application = WSGIHandler()

Кажется, сбой в этой строке:

from django.core.handlers.wsgi import WSGIHandler

Путь Virtualenv правильный, поэтому я не уверен, что могло бы это вызвать.

редактировать Я получаю эту трассировку при запуске файла .wsgi.

Traceback (most recent call last):
  File "djangosites/test1.wsgi", line 14, in <module>
    from django.core.handlers.wsgi import WSGIHandler
  File "/home/myofirst/virtualenv/lib/python2.6/site-packages/Django-1.2.3-py2.6.egg/django/core/handlers/wsgi.py", line 1, in <module>
    from threading import Lock
  File "/opt/python2.6/lib/python2.6/threading.py", line 13, in <module>
    from functools import wraps
ImportError: cannot import name wraps

Я изменился LogLevel warn к LogLevel debug в файле конфигурации apache. Django теперь загружается, ошибок в журналах нет, только строки, указывающие, где был запущен процесс python.

Я думаю, что скрывать ошибки - не лучшая идея, но я ожидаю, что отладка будет регистрировать больше ошибок. В любом случае это сработало, а это главное.

Есть ли __init__.py файл в той же папке, чем test1.wsgi ?