title: Heroku Python Django App Deployment Failure: No module named 'oauth2_provider'
body: <p>I am following the <a href="https://django-oauth-toolkit.readthedocs.io/en/latest/tutorial/tutorial_01.html" rel="nofollow noreferrer">Django OAuth Toolkit tutorial</a>.  I have the app running successfully on my local server with Django OAuth Toolkit installed.  </p>
  
  <p>When I try to deploy to Heroku I get a "ModuleNotFoundError: No module named 'oauth2_provider'" error while running '$ python manage.py collectstatic --noinput'.</p>
  
  <p>I have attempted to search Stack Overflow for similar questions but was unable to find one.  I saw many questions on Stack Overflow relating to collectstatic but I do not think that is my problem.  </p>
  
  <p>My backtrace is as so:</p>
  
  <pre><code>remote: -----&gt; Python app detected
  remote: -----&gt; Installing requirements with pip
  remote: 
  remote: -----&gt; $ python manage.py collectstatic --noinput
  remote:        Traceback (most recent call last):
  remote:          File "manage.py", line 10, in &lt;module&gt;
  remote:            execute_from_command_line(sys.argv)
  remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 363, in execute_from_command_line
  remote:            utility.execute()
  remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 337, in execute
  remote:            django.setup()
  remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/__init__.py", line 27, in setup
  remote:            apps.populate(settings.INSTALLED_APPS)
  remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/apps/registry.py", line 85, in populate
  remote:            app_config = AppConfig.create(entry)
  remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/apps/config.py", line 94, in create
  remote:            module = import_module(entry)
  remote:          File "/app/.heroku/python/lib/python3.6/importlib/__init__.py", line 126, in import_module
  remote:            return _bootstrap._gcd_import(name[level:], package, level)
  remote:          File "&lt;frozen importlib._bootstrap&gt;", line 978, in _gcd_import
  remote:          File "&lt;frozen importlib._bootstrap&gt;", line 961, in _find_and_load
  remote:          File "&lt;frozen importlib._bootstrap&gt;", line 948, in _find_and_load_unlocked
  remote:        ModuleNotFoundError: No module named 'oauth2_provider'
  remote: 
  remote:  !     Error while running '$ python manage.py collectstatic --noinput'.
  remote:        See traceback above for details.
  </code></pre>
  
  <p>My settings.py Installed Apps is as so:</p>
  
  <pre><code>INSTALLED_APPS = [
      'django.contrib.admin',
      'django.contrib.auth',
      'django.contrib.contenttypes',
      'django.contrib.sessions',
      'django.contrib.messages',
      # Disable Django's own staticfiles handling in favour of WhiteNoise, for
      # greater consistency between gunicorn and `./manage.py runserver`. See:
      # http://whitenoise.evans.io/en/stable/django.html#using-whitenoise-in-development
      'whitenoise.runserver_nostatic',
      'django.contrib.staticfiles',
      'oauth2_provider',
      'corsheaders',
  ]
  </code></pre>
  
  <p>I am using Python 3.6.1 and my requirements.txt is as so:</p>
  
  <pre><code>dj-database-url==0.4.1
  Django==1.11.1
  gunicorn==19.6.0
  psycopg2==2.6.2
  whitenoise==3.2
  </code></pre>