django error: ImproperlyConfigured: WSGI application

17,959

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.

Share:
17,959
fox
Author by

fox

Updated on June 13, 2022

Comments

  • fox
    fox almost 2 years

    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')
    
  • Thomas Orozco
    Thomas Orozco about 11 years
    @fox Happy to help! Remember to make sure never to override another Python's module with yours : )
  • fox
    fox about 11 years
    Yes, makes sense. One additional question -- the app was never listed under INSTALLED_APPS. I forget, do I have to list it there for django to pick it up if the app's directory is within my current project directory (i.e. project\app)?
  • Thomas Orozco
    Thomas Orozco about 11 years
    @fox Yes, or django will not register the application and, among other things, not create the required DB tables.
  • fox
    fox about 11 years
    okay, last q: how do I set up a relative path in the INSTALLED_APPS section?