Apache mod-wsgi django问题

时间:2011-06-30 20:07:41

标签: django apache mod-wsgi

当我尝试在Apache中的mod-wsgi下部署我的django应用程序时,我收到了此错误消息。

[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 个答案:

答案 0 :(得分:4)

你的问题是:

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

DJANGO_SETTINGS_MODULE需要是一个可导入的python模块,其中包含您的设置。 Django基本上会使用您当前的django.wsgi

进行import ../tryserver/tryserver.settings

获得您尝试做的最好的解决方法是将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()