Ошибка Mod_python: ошибка импорта: не удалось импортировать настройки - PullRequest
6 голосов
/ 07 июня 2009

Попытка заставить Django работать с Apache, и я получаю следующую ошибку:

ImportError: Не удалось импортировать настройки «MyDjangoApp.settings» (находится ли он в sys.path? Есть ли синтаксические ошибки?): Нет модуля с именем MyDjangoApp.settings

Мое приложение Django находится в / home / user / django / MyDjangoApp /

Мой раздел httpd.conf выглядит так:

<Location "/MyDjangoApp/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings
  PythonOption django.root /MyDjangoApp
  PythonPath "['/home/user/django/MyDjangoApp/','/var/www'] + sys.path" 
  PythonDebug On
</Location>

Подскажите, пожалуйста, как исправить раздел местоположения, чтобы заставить работать Django?

Ответы [ 3 ]

11 голосов
/ 08 июня 2009

Я думаю, что mod_python ищет настройки в модуле MKSearch, которого нет в каталоге / home / user / django / MyDjangoApp. Попробуйте добавить родительский каталог в директиву PythonPath, как показано ниже:

<Location "/MyDjangoApp/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE MKSearch.settings
  PythonOption django.root /MyDjangoApp
  PythonPath "['/home/user/django/', '/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
  PythonDebug On
</Location>

Или удалите имя модуля из переменной DJANGO_SETTINGS_MODULE, как показано ниже:

<Location "/MyDjangoApp/">
  SetHandler python-program
  PythonHandler django.core.handlers.modpython
  SetEnv DJANGO_SETTINGS_MODULE settings
  PythonOption django.root /MyDjangoApp
  PythonPath "['/home/user/django/MyDjangoApp,'/var/www'] + sys.path" 
  PythonDebug On
</Location>
4 голосов
/ 08 февраля 2010

Дайте этот ответ для полноты - даже если ваш случай был другим.

Я однажды назвал свой проект django test. Итак, django импортировал тестовый модуль Python - модуль для регрессионного тестирования, который не имеет ничего общего с моим проектом.

Эта ошибка произойдет, если python найдет другой модуль с тем же именем, что и у вашего проекта django. Назовите свой проект особым образом или добавьте путь к родительскому каталогу вашего приложения к sys.path.

0 голосов
/ 24 сентября 2010

Следующий пример, расположенный в моем файле конфигурации Apache, работает. Мне было очень трудно заставить работать mod_python, несмотря на хорошие ответы от людей. По большей части, все комментарии, которые я получил, говорят, что они используют mod_wsgi вместо mod_python.

Комментарии, которые я видел, включая Boston Python Meetup, все concur mod_wsgi проще в использовании. В моем случае на Red Hat EL 5 WS переход с mod_python нецелесообразен.

<Location />
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE settings
        PythonOption django.root /home/amr/django/amr
        PythonPath "['/home/amr/django', '/home/amr/django/amr', '/usr/local/lib
/site-packages/django'] + sys.path"
        PythonDebug On
</Location>
...