2013-07-10 114 views
3

我有一个django应用程序(https://github.com/wjdp/nt-tickets)与settings.py文件在根目录中而不是在nt-tickets子目录中。这工作得很好,如wsgi.py和manage.py以下行已被改变,以反映变化:Gunicorn和Django设置模块

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

我打算使用部署gunicorn和正在运行到一个问题。 Gunicorn忽略这一行,并假定设置文件将为nt_tickets.settings。我开始gunicorn这样的:

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 
+0

检查你的'manage.py'文件。它仍然可以使用旧的设置 – karthikr

+0

,正如问题中提到的那样'manage.py'没问题(https://raw.github.com/wjdp/nt-tickets/master/manage.py) – wjdp

回答

2

我有同样的问题,更糟糕的是,它具有相同结构的其他项目运作良好。我发现django不会更改DJANGO_SETTINGS_MODULE路径,所以在wsgi.py中,我将它设置为:os.environ ['DJANGO_SETTINGS_MODULE'] =“settings”它可以解决问题。

+0

目前有点繁忙,但会稍后再说 – wjdp

0

我移动我的wsgi.py文件从我django_project文件夹的解决了这一问题。所以对于OP提到的情况('nt_tickets.settings')。他需要将wsgi.py文件移出nt_ticket文件夹,并且这应该可以做到。

1

在python3.4下,将__init__.py文件放入我的settings目录中修复了这个问题。