我有一个Django应用(https://github.com/wjdp/nt-tickets),其settings.py文件位于根目录而不是nt-tickets子目录中。可以在wsgi.py和manage.py中正常工作,以下行已更改以反射(reflect)更改:

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")

我正在计划使用gunicorn进行部署,但遇到了一个问题。 Gunicorn忽略此行,并假定设置文件将为nt_tickets.settings。我开始像这样开枪:
gunicorn wsgi:application

并得到此错误:
ImportError: Could not import settings 'nt_tickets.settings' (Is it on sys.path?): No module named nt_tickets.settings

我发现在命令末尾放置--settings "settings"可以解决此问题,但是为什么我必须这样做?确定在wsgi.py中设置的环境变量是否足够?这似乎有些琐碎,我想不再重复自己。

完整跟踪:
2013-07-10 01:12:12 [29417] [ERROR] Error handling request
Traceback (most recent call last):
  File "/home/will/env/nt_tickets/local/lib/python2.7/site-packages/gunicorn/workers/sync.py", line 126, in handle_request
    respiter = self.wsgi(environ, resp.start_response)
  File "/home/will/env/nt_tickets/local/lib/python2.7/site-packages/django/core/handlers/wsgi.py", line 236, in __call__
    self.load_middleware()
  File "/home/will/env/nt_tickets/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 45, in load_middleware
    for middleware_path in settings.MIDDLEWARE_CLASSES:
  File "/home/will/env/nt_tickets/local/lib/python2.7/site-packages/django/conf/__init__.py", line 53, in __getattr__
    self._setup(name)
  File "/home/will/env/nt_tickets/local/lib/python2.7/site-packages/django/conf/__init__.py", line 48, in _setup
    self._wrapped = Settings(settings_module)
  File "/home/will/env/nt_tickets/local/lib/python2.7/site-packages/django/conf/__init__.py", line 134, in __init__
    raise ImportError("Could not import settings '%s' (Is it on sys.path?): %s" % (self.SETTINGS_MODULE, e))
ImportError: Could not import settings 'nt_tickets.settings' (Is it on sys.path?): No module named nt_tickets.settings

最佳答案

我有同样的问题,更糟的是,具有相同结构的另一个项目效果很好。我发现django不会更改DJANGO_SETTINGS_MODULE路径,因此在wsgi.py中,我将其设置为:os.environ ['DJANGO_SETTINGS_MODULE'] =“settings”它可以解决问题。

关于python - Gunicorn和django设置模块,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17560471/

10-12 03:41
查看更多