title: Python Django - "AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL
body: <p>If there is any bug in my code (code within a model that is used within a view which uses LoginRequiredMixin ) e.g. A bug like:</p>
  
  <pre><code>if (True:    # &lt;-- example bug to show how bugs like this are hidden
  </code></pre>
  
  <p>Then I get the following error:</p>
  
  <pre><code>"AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL
  django.core.exceptions.ImproperlyConfigured: 
  AUTH_USER_MODEL refers to model 'auth.User' that has not been installed
  </code></pre>
  
  <p>This makes it really hard to debug the code. I have figured out if I remove this line from my views.py:</p>
  
  <pre><code>from django.contrib.auth.mixins import LoginRequiredMixin
  </code></pre>
  
  <p>Even if I remove all instances where LoginRequiredMixin is used, just by importing it, it hides the true bug and generates the above auth error.</p>
  
  <p>I have read: <a href="https://stackoverflow.com/questions/37028655/auth-user-model-refers-to-model-s-that-has-not-been-installed-settings-aut?rq=1">AUTH_USER_MODEL refers to model &#39;%s&#39; that has not been installed&quot; % settings.AUTH_USER_MODEL</a></p>
  
  <p>My research shows most of the time this is due to "django.contrib.auth'" missing from INSTALLED_APPS, which you can see I have (settings.py snippet, Django 2.2):</p>
  
  <pre><code>INSTALLED_APPS = [
      'django.contrib.admin',
      'django.contrib.auth', # &lt;-- Important for this topic!
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      'django.contrib.staticfiles',
      'myapp.apps.CommonConfig',
  ]
  
  MIDDLEWARE = [
      'django.middleware.security.SecurityMiddleware',
      'django.contrib.sessions.middleware.SessionMiddleware',
      'django.middleware.common.CommonMiddleware',
      'django.middleware.csrf.CsrfViewMiddleware',
      'django.contrib.auth.middleware.AuthenticationMiddleware',
      'django.contrib.messages.middleware.MessageMiddleware',
      'django.middleware.clickjacking.XFrameOptionsMiddleware',
  ]
  </code></pre>
  
  <p>I tried adding this to above the mixim import but neither helped:</p>
  
  <pre><code>from django.contrib import auth
  from django.contrib.auth.models import User
  </code></pre>
  
  <p>This part of the full traceback agrees with the above:</p>
  
  <pre><code>Traceback (most recent call last):
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\apps\registry.py", line 155, in get_app_config
      return self.app_configs[app_label]
  KeyError: 'auth'
  </code></pre>
  
  <p>Here is the traceback if I call makemigrations (This is what I expect):</p>
  
  <pre><code>    C:\code\myproject\src&gt;pipenv run python manage.py makemigrations
  Traceback (most recent call last):
    File "manage.py", line 15, in &lt;module&gt;
      execute_from_command_line(sys.argv)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
      utility.execute()
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\core\management\__init__.py", line 357, in execute
      django.setup()
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\__init__.py", line 24, in setup
      apps.populate(settings.INSTALLED_APPS)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\apps\registry.py", line 114, in populate
      app_config.import_models()
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\apps\config.py", line 211, in import_models
      self.models_module = import_module(models_module_name)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\importlib\__init__.py", line 126, in import_module
      return _bootstrap._gcd_import(name[level:], package, level)
    File "&lt;frozen importlib._bootstrap&gt;", line 994, in _gcd_import
    File "&lt;frozen importlib._bootstrap&gt;", line 971, in _find_and_load
    File "&lt;frozen importlib._bootstrap&gt;", line 955, in _find_and_load_unlocked
    File "&lt;frozen importlib._bootstrap&gt;", line 665, in _load_unlocked
    File "&lt;frozen importlib._bootstrap_external&gt;", line 678, in exec_module
    File "&lt;frozen importlib._bootstrap&gt;", line 219, in _call_with_frames_removed
    File "C:\code\myproject\src\myapp\models.py", line 14, in &lt;module&gt;
      from .sql import myapp_entry_clean, myapp_entry_grouping
    File "C:\code\myproject\src\myapp\sql.py", line 68
      if (True:
              ^
  SyntaxError: invalid syntax
  
  C:\code\myproject\src&gt;
  </code></pre>
  
  <p>Here is the traceback with runserver:</p>
  
  <pre><code>    C:\code\myproject\src&gt;pipenv run python manage.py runserver
  Watching for file changes with StatReloader
  Exception in thread Thread-1:
  Traceback (most recent call last):
    File "C:\Users\User\AppData\Local\Programs\Python\Python36\Lib\threading.py", line 916, in _bootstrap_inner
      self.run()
    File "C:\Users\User\AppData\Local\Programs\Python\Python36\Lib\threading.py", line 864, in run
      self._target(*self._args, **self._kwargs)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\utils\autoreload.py", line 54, in wrapper
      fn(*args, **kwargs)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\core\management\commands\runserver.py", line 109, in inner_run
      autoreload.raise_last_exception()
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\utils\autoreload.py", line 77, in raise_last_exception
      raise _exception[0](_exception[1]).with_traceback(_exception[2])
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\utils\autoreload.py", line 54, in wrapper
      fn(*args, **kwargs)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\__init__.py", line 24, in setup
      apps.populate(settings.INSTALLED_APPS)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\apps\registry.py", line 114, in populate
      app_config.import_models()
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\apps\config.py", line 211, in import_models
      self.models_module = import_module(models_module_name)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\importlib\__init__.py", line 126, in import_module
      return _bootstrap._gcd_import(name[level:], package, level)
    File "&lt;frozen importlib._bootstrap&gt;", line 994, in _gcd_import
    File "&lt;frozen importlib._bootstrap&gt;", line 971, in _find_and_load
    File "&lt;frozen importlib._bootstrap&gt;", line 955, in _find_and_load_unlocked
    File "&lt;frozen importlib._bootstrap&gt;", line 665, in _load_unlocked
    File "&lt;frozen importlib._bootstrap_external&gt;", line 678, in exec_module
    File "&lt;frozen importlib._bootstrap&gt;", line 219, in _call_with_frames_removed
    File "C:\code\myproject\src\myapp\models.py", line 14, in &lt;module&gt;
      from .sql import myapp_entry_clean, myapp_entry_grouping
    File "&lt;string&gt;", line None
  SyntaxError: invalid syntax (sql.py, line 68)
  
  Traceback (most recent call last):
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\apps\registry.py", line 155, in get_app_config
      return self.app_configs[app_label]
  KeyError: 'auth'
  
  During handling of the above exception, another exception occurred:
  
  Traceback (most recent call last):
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\contrib\auth\__init__.py", line 165, in get_user_model
      return django_apps.get_model(settings.AUTH_USER_MODEL, require_ready=False)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\apps\registry.py", line 205, in get_model
      app_config = self.get_app_config(app_label)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\apps\registry.py", line 162, in get_app_config
      raise LookupError(message)
  LookupError: No installed app with label 'auth'.
  
  During handling of the above exception, another exception occurred:
  
  Traceback (most recent call last):
    File "manage.py", line 15, in &lt;module&gt;
      execute_from_command_line(sys.argv)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\core\management\__init__.py", line 381, in execute_from_command_line
      utility.execute()
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\core\management\__init__.py", line 375, in execute
      self.fetch_command(subcommand).run_from_argv(self.argv)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\core\management\base.py", line 323, in run_from_argv
      self.execute(*args, **cmd_options)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\core\management\commands\runserver.py", line 60, in execute
      super().execute(*args, **options)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\core\management\base.py", line 364, in execute
      output = self.handle(*args, **options)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\core\management\commands\runserver.py", line 95, in handle
      self.run(**options)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\core\management\commands\runserver.py", line 102, in run
      autoreload.run_with_reloader(self.inner_run, **options)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\utils\autoreload.py", line 579, in run_with_reloader
      start_django(reloader, main_func, *args, **kwargs)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\utils\autoreload.py", line 564, in start_django
      reloader.run(django_main_thread)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\utils\autoreload.py", line 272, in run
      get_resolver().urlconf_module
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\utils\functional.py", line 80, in __get__
      res = instance.__dict__[self.name] = self.func(instance)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\urls\resolvers.py", line 564, in urlconf_module
      return import_module(self.urlconf_name)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\importlib\__init__.py", line 126, in import_module
      return _bootstrap._gcd_import(name[level:], package, level)
    File "&lt;frozen importlib._bootstrap&gt;", line 994, in _gcd_import
    File "&lt;frozen importlib._bootstrap&gt;", line 971, in _find_and_load
    File "&lt;frozen importlib._bootstrap&gt;", line 955, in _find_and_load_unlocked
    File "&lt;frozen importlib._bootstrap&gt;", line 665, in _load_unlocked
    File "&lt;frozen importlib._bootstrap_external&gt;", line 678, in exec_module
    File "&lt;frozen importlib._bootstrap&gt;", line 219, in _call_with_frames_removed
    File "C:\code\myproject\src\linkcube\urls.py", line 20, in &lt;module&gt;
      path('', include('common.urls')),
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\urls\conf.py", line 34, in include
      urlconf_module = import_module(urlconf_module)
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\importlib\__init__.py", line 126, in import_module
      return _bootstrap._gcd_import(name[level:], package, level)
    File "&lt;frozen importlib._bootstrap&gt;", line 994, in _gcd_import
    File "&lt;frozen importlib._bootstrap&gt;", line 971, in _find_and_load
    File "&lt;frozen importlib._bootstrap&gt;", line 955, in _find_and_load_unlocked
    File "&lt;frozen importlib._bootstrap&gt;", line 665, in _load_unlocked
    File "&lt;frozen importlib._bootstrap_external&gt;", line 678, in exec_module
    File "&lt;frozen importlib._bootstrap&gt;", line 219, in _call_with_frames_removed
    File "C:\code\myproject\src\common\urls.py", line 5, in &lt;module&gt;
      from . import views
    File "C:\code\myproject\src\common\views.py", line 9, in &lt;module&gt;
      from django.contrib.auth.mixins import LoginRequiredMixin
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\contrib\auth\mixins.py", line 3, in &lt;module&gt;
      from django.contrib.auth.views import redirect_to_login
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\contrib\auth\views.py", line 10, in &lt;module&gt;
      from django.contrib.auth.forms import (
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\contrib\auth\forms.py", line 20, in &lt;module&gt;
      UserModel = get_user_model()
    File "C:\Users\User\.virtualenvs\myproject-wc-xNQPL\lib\site-packages\django\contrib\auth\__init__.py", line 170, in get_user_model
      "AUTH_USER_MODEL refers to model '%s' that has not been installed" % settings.AUTH_USER_MODEL
  django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'auth.User' that has not been installed
  
  C:\code\myproject\src&gt;
  </code></pre>
  
  <p>How do I make it so that the auth error is not falsely raised?</p>