Проблема с Apache mod-wsgi django - PullRequest
2 голосов
/ 01 июля 2011

Я получаю это сообщение об ошибке, когда пытаюсь развернуть свое приложение django в mod-wsgi в Apache.

[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1] mod_wsgi (pid=4152): Exception     occurred processing WSGI script 'C:/DjangoProjects/tryserver/Apache/django.wsgi'.
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1] Traceback (most recent call   last):
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1]   File "C:\\Python27\\lib\\site-packages\\django\\core\\handlers\\wsgi.py", line 250, in __call__
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1]     self.load_middleware()
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1]   File "C:\\Python27\\lib\\site-  packages\\django\\core\\handlers\\base.py", line 39, in load_middleware
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1]     for middleware_path in settings.MIDDLEWARE_CLASSES:
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1]   File "C:\\Python27\\lib\\site-packages\\django\\utils\\functional.py", line 276, in __getattr__
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1]     self._setup()
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1]   File "C:\\Python27\\lib\\site-packages\\django\\conf\\__init__.py", line 42, in _setup
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1]     self._wrapped = Settings(settings_module)
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1]   File "C:\\Python27\\lib\\site-packages\\django\\conf\\__init__.py", line 87, in __init__
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1]     mod = importlib.import_module(self.SETTINGS_MODULE)
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1]   File "C:\\Python27\\lib\\site-packages\\django\\utils\\importlib.py", line 28, in import_module
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1]     raise TypeError("relative imports require the 'package' argument")
[Thu Jun 30 23:03:35 2011] [error] [client 127.0.0.1] TypeError: relative imports require the 'package' argument

Это мой django.wsgi, и он находится в правильном месте.

import os
import sys

os.environ['DJANGO_SETTINGS_MODULE'] = '../tryserver/tryserver.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

В чем может быть проблема?

Спасибо

1 Ответ

4 голосов
/ 01 июля 2011

Ваша проблема:

os.environ['DJANGO_SETTINGS_MODULE'] = '../tryserver/tryserver.settings'

DJANGO_SETTINGS_MODULE должен быть импортируемым модулем Python, который содержит ваши настройки. Django в основном собирается сделать import ../tryserver/tryserver.settings с вашим текущим django.wsgi

Лучшее решение для получения того, что вы пытаетесь сделать, - это добавить каталог tryserver в путь к python. Предполагая, что ваш макет каталога выглядит примерно так:

./
    tryserver/
        tryserver/
            settings.py
    deploy/
        django.wsgi

Тогда в вашем django.wsgi вы можете сделать что-то вроде:

import os
import sys

sys.path = sys.path + ["/PATH/TO/tryserver/"] # The first one

os.environ['DJANGO_SETTINGS_MODULE'] = 'tryserver.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()
...