找不到设置模块在共享服务器上部署django

时间:2010-03-26 19:33:33

标签: python django fastcgi

我正在尝试在共享主机上部署我的django项目,如描述here

我的项目在/ home / user / www / testa

我正在使用此脚本


#!/usr/bin/python
import sys, os

sys.path.append("/home/user/bin/python")

sys.path.append('/home/user/www/testa')


os.chdir("/home/user/www/testa")

os.environ['DJANGO_SETTINGS_MODULE'] = "settings.py"

from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")

这是我在尝试从shell运行时遇到的错误:


WSGIServer: missing FastCGI param REQUEST_METHOD required by WSGI!
WSGIServer: missing FastCGI param SERVER_NAME required by WSGI!
WSGIServer: missing FastCGI param SERVER_PORT required by WSGI!
WSGIServer: missing FastCGI param SERVER_PROTOCOL required by WSGI!
Traceback (most recent call last):
  File "build/bdist.linux-i686/egg/flup/server/fcgi_base.py", line 558, in run
  File "build/bdist.linux-i686/egg/flup/server/fcgi_base.py", line 1118, in handler
  File "/home/user/lib/python2.4/site-packages/django/core/handlers/wsgi.py", line 230, in __call__
    self.load_middleware()
  File "/home/user/lib/python2.4/site-packages/django/core/handlers/base.py", line 33, in load_middleware
    for middleware_path in settings.MIDDLEWARE_CLASSES:
  File "/home/user/lib/python2.4/site-packages/django/utils/functional.py", line 269, in __getattr__
    self._setup()
  File "/home/usr/lib/python2.4/site-packages/django/conf/__init__.py", line 40, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/user/lib/python2.4/site-packages/django/conf/__init__.py", line 75, in __init__
    raise ImportError, "Could not import settings '%s' (Is it on sys.path? Does it have syntax errors?): %s" % (self.SETTINGS_MODULE, e)
ImportError: Could not import settings 'settings.py' (Is it on sys.path? Does it have syntax errors?): No module named settings.py
Content-Type: text/html



Unhandled Exception

Unhandled Exception

An unhandled exception was thrown by the application.

我做错了什么?

从浏览器运行脚本只会给我一个内部服务器错误。

1 个答案:

答案 0 :(得分:3)

该行

os.environ['DJANGO_SETTINGS_MODULE'] = "settings.py"

应该更像

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

根据您设置sys.path的方式。该环境变量应该包含模块的路径,因为它应该由Python 导入,而不是模块的实际文件名。

基本上,你现在的方式就是让Django在内部做这样的事情:

import settings.py

即,它正在尝试从py模块中导入settings模块。