title: Static file issues with Heroku and Django
body: <p>My site was working fine, but then I started having problems with images I was uploading to Heroku.  I was using whitenoise with Django but decided to move my image store and static files to AWS.  I was following along with this tutorial, and was able to get the files in my static folder up to S3. </p>
  
  <p>But now I'm having problems when trying to deploy to Heroku.</p>
  
  <p>Note I have a <code>static</code> folder inside of my app folder, inside of root.</p>
  
  <p>Getting this error when pushing--which includes a collectstatic</p>
  
  <p><code>FileNotFoundError: [Errno 2] No such file or directory: '/tmp/build_f05a3a5f9e4b6ad44dfdf0b62dd16e9e/static'</code></p>
  
  <p>I'm pretty sure that it is a temporary storage area for Heroku (?) but i'm guessing that /static shouldn't be on the end.  </p>
  
  <p>I'll copy my relevant settings.py variables here:</p>
  
  <pre><code>BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  DEFAULT_FILE_STORAGE = 'dealmazing.storage_backends.MediaStorage'
  STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'
  PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
  STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')
  
  # Additional locations of static files
  STATICFILES_DIRS = [
      os.path.join(BASE_DIR, 'static'),
  ]
  
  #This will make sure that the file URL does not have unnecessary parameters like your access key.
  AWS_ACCESS_KEY_ID = config('AWS_ACCESS_KEY_ID')
  AWS_SECRET_ACCESS_KEY = config('AWS_SECRET_ACCESS_KEY')
  AWS_STORAGE_BUCKET_NAME = config('AWS_STORAGE_BUCKET_NAME')
  AWS_S3_CUSTOM_DOMAIN = '%s.s3.amazonaws.com' % AWS_STORAGE_BUCKET_NAME
  AWS_S3_OBJECT_PARAMETERS = {
      'CacheControl': 'max-age=86400',
  }
  AWS_LOCATION = 'static'
  
  # Static files (CSS, JavaScript, Images)
  STATIC_URL = 'https://%s/%s/' % (AWS_S3_CUSTOM_DOMAIN, AWS_LOCATION)
  ADMIN_MEDIA_PREFIX = STATIC_URL + 'admin/'
  
  #media storage settings
  MEDIA_URL = STATIC_URL + 'media/'
  MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
  </code></pre>
  
  <p>and here is full traceback in case it is needed:</p>
  
  <pre><code> 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 371, in execute_from_command_line
  remote:            utility.execute()
  remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 365, in execute
  remote:            self.fetch_command(subcommand).run_from_argv(self.argv)
  remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 288, in run_from_argv
  remote:            self.execute(*args, **cmd_options)
  remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 335, in execute
  remote:            output = self.handle(*args, **options)
  remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 189, in handle
  remote:            collected = self.collect()
  remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 105, in collect
  remote:            for path, storage in finder.list(self.ignore_patterns):
  remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/finders.py", line 125, in list
  remote:            for path in utils.get_files(storage, ignore_patterns):
  remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/utils.py", line 28, in get_files
  remote:            directories, files = storage.listdir(location)
  remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/core/files/storage.py", line 313, in listdir
  remote:            for entry in os.listdir(path):
  remote:        FileNotFoundError: [Errno 2] No such file or directory: '/tmp/build_f05a3a5f9e4b6ad44dfdf0b62dd16e9e/static'
  remote:
  remote:  !     Error while running '$ python manage.py collectstatic --noinput'.
  remote:        See traceback above for details.
  remote:
  remote:        You may need to update application code to resolve this error.
  remote:        Or, you can disable collectstatic for this application:
  </code></pre>