2013-02-10 63 views
6

我的應用程序昨晚工作,不知道爲什麼今天早上它不能工作。我認爲我所做的只是創建一個名爲django的應用程序來存儲我的模型,測試和視圖。django錯誤:配置不正確:WSGI應用程序

收到此錯誤,用在OS X上的Heroku Postgres的應用和dj_database中間件上運行Django:

File "/Users/{ME}/Projects/{PROJECT}/{PROJECT}/lib/python2.7/site-packages/django/core/servers/basehttp.py", line 58, in get_internal_wsgi_application 
    "could not import module '%s': %s" % (app_path, module_name, e)) django.core.exceptions.ImproperlyConfigured: WSGI application 
'{PROJECT}.wsgi.application' could not be loaded; could not import module 
'{PROJECT}.wsgi': No module named core.wsgi 
wsgi.py文件的

相關部分:

""" 
WSGI config for {PROJECT} project. 

This module contains the WSGI application used by Django's development 
server and any production WSGI deployments. It should expose a 
module-level variable named ``application``. Django's ``runserver`` 
and ``runfcgi`` commands discover this application via the 
``WSGI_APPLICATION`` setting. 

Usually you will have the standard Django WSGI application here, but 
it also might make sense to replace the whole Django WSGI application 
with a custom one that later delegates to the Django one. For example, 
you could introduce WSGI middleware here, or combine a Django 
application with an application of another framework. 

""" 
import os 

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

# This application object is used by any WSGI server configured to use this 
# file. This includes Django's development server, if the WSGI_APPLICATION 
# setting points here. 
from django.core.wsgi import get_wsgi_application 
application = get_wsgi_application() 

# Apply WSGI middleware here. 
# from helloworld.wsgi import HelloWorldApplication 
# application = HelloWorldApplication(application) 

相關的(我認爲)的一部分我的settings.py文件:

WSGI_APPLICATION = '{PROJECT}.wsgi.application' 

# ... 

import dj_database_url 
DATABASES['default'] = dj_database_url.config(default='sqlite://db/sqlite3.db') 

回答

7

創建名爲django的應用程序意味着任何from django import X都將查看您的應用程序,而不是django框架。

在這種情況下,軟件正試圖導入django.core.wsgi,但它正在您的應用程序的代碼中查找此文件,無法找到該文件;因此錯誤:No module named core.wsgi


爲您的應用的另一個名字。

您必須重命名包含您的應用的文件夾以及settings.py中的INSTALLED_APPS條目。

+0

是做到了!謝謝! – fox 2013-02-10 19:46:35

+0

@fox樂於幫忙!記住要確保永遠不要用你的方法覆蓋另一個Python的模塊:) – 2013-02-10 19:46:56

+0

是的,有道理。還有一個問題 - 應用程序從未在「INSTALLED_APPS」下列出。我忘記了,如果應用程序的目錄位於我當前的項目目錄(例如'project \ app')中,我是否必須在那裏列出它以供django使用? – fox 2013-02-10 19:53:03

0

從Django的documentation

You’ll need to avoid naming projects after built-in Python or Django components. In particular, this means you should avoid using names like django (which will conflict with Django itself) or test (which conflicts with a built-in Python package).

相關問題