Проблема в том, что мой файл wsgi не может правильно импортировать обработчики wsgi.
/var/log/apache2/error.log
отчеты:
ImportError: модуль не указан
django.core.handlers.wsgi
При поиске в Google это приводит к паре результатов, в основном связанных с ошибками прав доступа, поскольку www-data
не может прочитать определенные файлы и / или путь к питону неверен. Некоторые из решений являются расплывчатыми или просто не работают в моих обстоятельствах.
Справочная информация ..
Мой каталог / usr / lib ..
/usr/lib/python2.4
/usr/lib/python2.5
/usr/lib/python2.6
/usr/lib/python-django
Версия Python по умолчанию - 2.5.2. Если я открою переводчика как обычный пользователь, я могу import django.core.handlers.wsgi
без проблем.
Если я переключаюсь на www-data
, версия Python такая же, и я могу без проблем импортировать модуль django.core.handlers.wsgi
.
В моем bashrc я установил свой PYTHONPATH в свой домашний каталог, который содержит все мои сайты django ...
export PYTHONPATH=/home/meder/django-sites/:$PYTHONPATH
Итак, структура каталогов:
django-sites/
test
test
- каталог, созданный django-admin createproject
.
Мой виртуальный хост:
<VirtualHost *:80>
ServerName beta.blah.com
WSGIScriptAlias / /home/meder/django-sites/test/apache/django.wsgi
Alias /media /home/meder/django-sites/test/media/
</VirtualHost>
Сам файл /home/meder/django-sites/test/apache/django.wsgi
:
import os, sys
sys.path.append('/usr/local/django')
sys.path.append('/home/meder/django-sites')
sys.path.append('/home/meder/django-sites/test')
os.environ['DJANGO_SETTINGS_MODULE'] = 'test.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
Наконец, моя ОС - Debian Lenny, и я взял django 1.1.1 из бэкпортов. Надеюсь, этого достаточно.
Обновление # 1 - для первого ответа вот результат ldd /usr/lib/apache2/modules/mod_wsgi.so
:
meder@site:/usr/lib/apache2/modules$ ldd mod_wsgi.so
libpython2.5.so.1.0 => /usr/lib/libpython2.5.so.1.0 (0xb7d99000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7d81000)
libdl.so.2 => /lib/libdl.so.2 (0xb7d7c000)
libutil.so.1 => /lib/libutil.so.1 (0xb7d78000)
libm.so.6 => /lib/libm.so.6 (0xb7d52000)
libc.so.6 => /lib/libc.so.6 (0xb7c14000)
/lib/ld-linux.so.2 (0xb7efd000)
Так что он скомпилирован для Python 2.5, а не 2.4.