Вопрос о развертывании Django newbie - ImportError: не удалось импортировать настройки настроек '
Приложение работает нормально, используя внутренний сервер django, однако, когда я использую apache + mod_python, я получаю следующую ошибку
File "/usr/local/lib/python2.6/dist-packages/django/conf/__init__.py", line 75, in __init__
raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
ImportError: Could not import settings 'settings' (Is it on sys.path? Does it have syntax errors?): No module named settings
Вот необходимая информация
1) Каталог проекта:/root/djangoprojects/mysite
2) каталог /root/djangoprojects/mysite
ls -ltr
total 28
-rw-r--r-- 1 root root 546 Aug 1 08:34 manage.py
-rw-r--r-- 1 root root 0 Aug 1 08:34 __init__.py
-rw-r--r-- 1 root root 136 Aug 1 08:35 __init__.pyc
-rw-r--r-- 1 root root 2773 Aug 1 08:39 settings.py
-rw-r--r-- 1 root root 1660 Aug 1 08:53 settings.pyc
drwxr-xr-x 2 root root 4096 Aug 1 09:04 polls
-rw-r--r-- 1 root root 581 Aug 1 10:06 urls.py
-rw-r--r-- 1 root root 314 Aug 1 10:07 urls.pyc
3) Каталог приложений:/root/djangoprojects/mysite/polls
4) список каталогов /root/djangoprojects/mysite/polls
ls -ltr
total 20
-rw-r--r-- 1 root root 514 Aug 1 08:53 tests.py
-rw-r--r-- 1 root root 57 Aug 1 08:53 models.py
-rw-r--r-- 1 root root 0 Aug 1 08:53 __init__.py
-rw-r--r-- 1 root root 128 Aug 1 09:02 views.py
-rw-r--r-- 1 root root 375 Aug 1 09:04 views.pyc
-rw-r--r-- 1 root root 132 Aug 1 09:04 __init__.pyc
5) В любом месте в файловой системе, использующей импорт django в интерпретаторе python, отлично работает
6) содержимое httpd.conf
<Location "/mysite">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE settings
PythonOption django.root /mysite
PythonPath "['/root/djangoprojects/', '/root/djangoprojects/mysite','/root/djangoprojects/mysite/polls', '/var/www'] + sys.path"
PythonDebug On
</Location>
7) Переменная PYTHONPATH установлена на
echo $PYTHONPATH
/root/djangoprojects/mysite
8) Для параметра DJANGO_SETTINGS_MODULE установлено значение
echo $DJANGO_SETTINGS_MODULE
mysite.settings
9) содержимое sys.path имеет значение
import sys
>>> sys.path
['', '/root/djangoprojects/mysite', '/usr/lib/python2.6', '/usr/lib/python2.6/plat-linux2', '/usr/lib/python2.6/lib-tk', '/usr/lib/python2.6/lib-old', '/usr/lib/python2.6/lib-dynload', '/usr/lib/python2.6/dist-packages', '/usr/local/lib/python2.6/dist-packages']
Как добавить расположение настроек в sys.path, чтобы он сохранялся во всех сеансах?
Я читал бессмысленно сообщение с людьми, имеющими ту же самую проблему, и я пробовал много, чтобы полностью побить меня по поводу того, что мне нужно делать.
Ищите помощь.
Спасибо заранее
Анкур Гупта
Ответы
Ответ 1
Ваша конфигурация apache должна выглядеть так:
<Location "/mysite">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonOption django.root /mysite
PythonPath "['/root/djangoprojects/', '/root/djangoprojects/mysite','/root/djangoprojects/mysite/polls', '/var/www'] + sys.path"
PythonDebug On
</Location>
Обратите внимание, что единственная разница - это "mysite.settings". Не забудьте перезапустить apache после изменения конфигурации (перезапуск apache2ctl). Подробнее см. http://docs.djangoproject.com/en/dev/howto/deployment/modpython/.
Ответ 2
Попробуйте перейти к следующему:
<Location "/mysite">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE mysite.settings
PythonOption django.root /mysite
PythonPath "['/root/djangoprojects', '/var/www'] + sys.path"
PythonDebug On
</Location>
Не используйте "/" в конце записей PythonPath (это может быть проблема, у меня были проблемы с этим, по крайней мере, в Windows).
Записи '/root/djangoprojects/mysite', '/root/djangoprojects/mysite/polls' не нужны, поскольку вы будете ссылаться на свои модули по имени (т.е. mysite.sttings означает модуль настроек внутри mysite пакет, который является правильным способом доступа к нему в PythonPath/root/djangoprojects).