Django ImportError: No module named middleware
Question: I am using Django version 1.8 and python 2.7. I am getting the following error
after running my project.

    
    
    Traceback (most recent call last):
      File "C:\Python27\lib\wsgiref\handlers.py", line 85, in run
        self.result = application(self.environ, self.start_response)
      File "C:\Python27\lib\site-packages\django\contrib\staticfiles\handlers.py", line 63, in __call__
        return self.application(environ, start_response)
      File "C:\Python27\lib\site-packages\django\core\handlers\wsgi.py", line 170, in __call__
        self.load_middleware()
      File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 50, in load_middleware
        mw_class = import_string(middleware_path)
      File "C:\Python27\lib\site-packages\django\utils\module_loading.py", line 26, in import_string
        module = import_module(module_path)
      File "C:\Python27\lib\importlib\__init__.py", line 37, in import_module
        __import__(name)
    ImportError: No module named middleware
    [26/Aug/2015 20:34:29] "GET /favicon.ico HTTP/1.1" 500 59
    

This is my settings.py file

    
    
    """
    Django settings for collageapp project.
    
    Generated by 'django-admin startproject' using Django 1.8.
    
    For more information on this file, see
    https://docs.djangoproject.com/en/1.8/topics/settings/
    
    For the full list of settings and their values, see
    https://docs.djangoproject.com/en/1.8/ref/settings/
    """
    
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    import os
    
    APP_PATH = os.path.dirname(os.path.abspath(__file__))
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    
    
    # Quick-start development settings - unsuitable for production
    # See https://docs.djangoproject.com/en/1.8/howto/deployment/checklist/
    
    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = '******************************************************'
    
    # SECURITY WARNING: don't run with debug turned on in production!
    DEBUG = True
    
    ALLOWED_HOSTS = []
    
    
    # Application definition
    
    INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'manageApp',
        'django.contrib.sites',
        'allauth',
        'allauth.account',
        'allauth.socialaccount',
        'allauth.socialaccount.providers.facebook',
        'allauth.socialaccount.providers.google',
        'django.contrib.admindocs',
        'rest_framework',
    )
    
    SITE_ID = 1
    
    MIDDLEWARE_CLASSES = (
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
        'django.middleware.security.SecurityMiddleware',
        'corsheaders.middleware.CorsMiddleware',
        'oauth2_provider.middleware.OAuth2TokenMiddleware',
    )
    
    
    ROOT_URLCONF = 'collageapp.urls'
    CORS_ORIGIN_ALLOW_ALL = True
    
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                    'allauth.account.context_processors.account',
                    'allauth.socialaccount.context_processors.socialaccount'
                ],
            },
        },
    ]
    
    WSGI_APPLICATION = 'collageapp.wsgi.application'
    
    
    # Database
    # https://docs.djangoproject.com/en/1.8/ref/settings/#databases
    
    DATABASES = {
         'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'college_app',
            'USER': 'root',
            'PASSWORD': '',
            'HOST': 'localhost',   # Or an IP Address that your DB is hosted on
            'PORT': '3306',
        }
    }
    
    
    
    # Internationalization
    # https://docs.djangoproject.com/en/1.8/topics/i18n/
    
    LANGUAGE_CODE = 'en-us'
    
    TIME_ZONE = 'UTC'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = True
    
    
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/1.8/howto/static-files/
    
    STATIC_URL = '/static/'
    

I have tried surfing the error but in vain. My same code is working fine in
other machine.


Answer: Open up a python shell by running `python manage.py shell` in your project
directory.

Run the following commands **one at a time** in the python shell:

    
    
    >>> from corsheaders.middleware import CorsMiddleware
    >>> from oauth2_provider.middleware import OAuth2TokenMiddleware
    >>> from django.contrib.auth.middleware import SessionAuthenticationMiddleware
    

One of the lines should give you an error like the following:

    
    
    Traceback (most recent call last):
      File "<console>", line 1, in <module>
    ImportError: No module named middleware
    

The line that gives you that error is the missing module that is giving you
the problem.

To find the path where the modules are searched, do

    
    
    >>> import sys; sys.path
    

* * *

Alternatively, if you don't know how to use the python shell, you could just
remove the following lines in your `settings.MIDDLEWARE_CLASSES` one at a time
until you don't get that error anymore:

    
    
    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
    'corsheaders.middleware.CorsMiddleware',
    'oauth2_provider.middleware.OAuth2TokenMiddleware',
    

* * *

Just reinstall the package that gave you the error.

`django.contrib.auth.middleware` -> `django`

`corsheaders.middleware` -> `corsheaders`

`oauth2_provider.middleware` -> `oauth2_provider`

