2009-06-07 5 views
6

Попытка получить Django для работы с Apache, и я получаю следующее сообщение об ошибке:mod_python ошибка: ImportError: Не удалось импортировать настройки

ImportError: Could not import settings 'MyDjangoApp.settings' (Is it on sys.path? Does it have syntax errors?): No module named MyDjangoApp.settings

My 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 работать?

ответ

11

Я думаю, 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> 
+0

+1 Джанго документы затушевать разницу между «/ главная/пользователя/Джанго» (который позволяет «из MyDjangoApp импорта Foo») и альтернатив. –

+0

Удаление имени модуля из перед установкой разрешило мою проблему. Уф! – PhoebeB

4

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

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

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

+2

То, что со мной произошло. Благодаря! – nlaq

+0

Это была моя проблема. У меня была промежуточная область с именем test, и имя конфликтует со встроенным пакетом. Это кажется достаточно распространенным, что Django, вероятно, должен дать для него специальное сообщение об ошибке. –

-1

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

Комментарии, которые я видел в том числе из Boston Python Meetup all 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> 
Смежные вопросы