django error: ImproperlyConfigured: WSGI application

fox picture fox · Feb 10, 2013 · Viewed 17.5k times · Source

My application was working last night, not sure why it won't work this morning. I think that all I did was to create an app called django to store my models, tests, and views.

Getting this error, running django with the Heroku Postgres application on OS X and dj_database as middleware:

  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

Relevant part of my wsgi.py file:

"""
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)

Relevant (I think) part of my settings.py file:

WSGI_APPLICATION = '{PROJECT}.wsgi.application'

# ...

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

Answer

Thomas Orozco picture Thomas Orozco · Feb 10, 2013

Creating an app called django means that any from django import X is going to be looking at your app, not at the django framework.

In this case, the software is trying to import django.core.wsgi, but it's now looking for this file in your app's code, where it's nowhere to be found; hence the error: No module named core.wsgi


Give your app another name.

You'll have to rename the folder that contains your app, and the INSTALLED_APPS entry in settings.py.