当我尝试在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()
可能是什么问题?
由于
答案 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()