Почему мое приложение Django не работает с Apache / mod_python? - PullRequest
0 голосов
/ 22 января 2009

У меня есть настройка Apache для обслуживания запросов на http://www.mysite.com из этого каталога:

/ вар / WWW / HTML / www.mysite.com

Сайт Django находится в /var/www/html/www.mysite.com/mysite.

Я получаю эту ошибку, когда делаю запрос для / mysite / app / foo:

(трассировка большого стека) AttributeError: у объекта 'module' нет атрибута 'common'

'myapp.common' - это первый элемент в списке после всех приложений django (например, 'django.contrib.admin') в INSTALLED_APPS в файле settings.py. Если я изменю порядок перечисленных модулей, Django задыхается на первом пути одного из моих приложений, с которым оно сталкивается.

Путь импорта Python кажется правильным, так как он находит mysite.settings:

<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonOption django.root /mysite
    PythonDebug On
    PythonPath "['/var/www/html/www.mysite.com'] + sys.path"
</Location>

В чем может быть проблема? Странно, что он жалуется на «обычный», когда фактический список содержит «mysite.common»:

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'mysite.common',
    ....

Это ошибка в Django или у меня что-то неправильно настроено? Возможно, некоторая внешняя зависимость должна быть добавлена ​​в путь импорта? Он работает нормально с сервером разработки Django.

Ответы [ 3 ]

1 голос
/ 22 января 2009

Содержит ли ваша директория mysite файл __init__.py? Следует отметить его как пакет .

0 голосов
/ 12 февраля 2009

Я предполагаю, что вы намеренно скрываете свое действительное имя модуля, и это нормально ... но я получил эту ошибку, когда назвал свой сайт Django (mysite, в вашем случае) тем же именем, что и модуль Python. который существует в другом месте в sys.path.

Например, если вы создали сайт Django с именем math, в котором есть приложение с именем common, вы получите эту ошибку, потому что системный математический модуль Python не содержит атрибута или подмодуля с именем common.

Вам нужно будет переименовать свой сайт Django, чтобы он не конфликтовал с именем другого модуля.

0 голосов
/ 11 февраля 2009

Является ли mysite.common пакетом, хранящимся в /var/www/html/www.mysite.com/mysite/common? Если это так, попробуйте использовать common вместо mysite.common в INSTALLED_APPS.

...