title: Unable to deploy to heroku due to requirements.txt error
body: <p>I am trying to deploy a flask app to heroku for the first time. when i do git push heroku master i get the following error</p>
  <p><a href="https://i.stack.imgur.com/h0kAD.png" rel="nofollow noreferrer">app.py</a></p>
  <p><code>cp: cannot stat '/tmp/cache/requirements.txt': No such file or directory</code></p>
  <p>my procfile looks like this
  <code>web: gunicorn app.py</code></p>
  <p>runtime.txt
  <code>python-3.6.1</code></p>
  <p>requirements.txt</p>
  <pre><code>bokeh==2.1.1
  certifi==2020.6.20
  chardet==3.0.4
  click==7.1.2
  cssmin==0.2.0
  Flask==1.1.2
  Flask-Assets==2.0
  Flask-SQLAlchemy==2.4.3
  gunicorn==20.0.4
  httplib2==0.18.1
  idna==2.9
  isort==4.3.21
  itsdangerous==1.1.0
  Jinja2==2.11.2
  jsmin==2.2.2
  lazy-object-proxy==1.4.3
  libsass==0.20.0
  MarkupSafe==1.1.1
  mccabe==0.6.1
  numpy==1.19.0
  opensecrets-crpapi==0.2.2
  packaging==20.4
  pandas==1.0.5
  Pillow==7.2.0
  pylint==2.5.3
  pyparsing==2.4.7
  python-dateutil==2.8.1
  python-dotenv==0.13.0
  pytz==2020.1
  PyYAML==5.3.1
  requests==2.24.0
  six==1.15.0
  SQLAlchemy==1.3.18
  toml==0.10.1
  tornado==6.0.4
  typed-ast==1.4.1
  typing-extensions==3.7.4.2
  urllib3==1.25.9
  webassets==2.0
  Werkzeug==1.0.1
  whitenoise==5.1.0
  wrapt==1.12.1
  </code></pre>
  <p>here is the full error log</p>
  <pre><code>remote: -----&gt; Python app detected
  remote: cp: cannot stat '/tmp/cache/requirements.txt': No such file or directory
  remote: -----&gt; Installing python-3.6.11
  remote: -----&gt; Installing pip
  remote: -----&gt; Installing SQLite3
  remote: -----&gt; Installing requirements with pip
  remote:        Obtaining file:///tmp/cache (from -r /tmp/cache/requirements.txt (line 1))
  remote:            ERROR: Command errored out with exit status 1:
  remote:             command: /app/.heroku/python/bin/python -c 'import sys, setuptools, tokenize; sys.argv[0] = '&quot;'&quot;'/tmp/cache/setup.py'&quot;'&quot;'; __file__='&quot;'&quot;'/tmp/cache/setup.py'&quot;'&quot;';f=getattr(tokenize, '&quot;'&quot;'open'&quot;'&quot;', open)(__file__);code=f.read().replace('&quot;'&quot;'\r\n'&quot;'&quot;', '&quot;'&quot;'\n'&quot;'&quot;');f.close();exec(compile(code, __file__, '&quot;'&quot;'exec'&quot;'&quot;'))' egg_info
  remote:                 cwd: /tmp/cache/
  remote:            Complete output (8 lines):
  remote:            running egg_info
  remote:            creating finalproject.egg-info
  remote:            writing finalproject.egg-info/PKG-INFO
  remote:            writing dependency_links to finalproject.egg-info/dependency_links.txt
  remote:            writing requirements to finalproject.egg-info/requires.txt
  remote:            writing top-level names to finalproject.egg-info/top_level.txt
  remote:            writing manifest file 'finalproject.egg-info/SOURCES.txt'
  remote:            error: package directory 'application' does not exist
  remote:            ----------------------------------------
  remote:        ERROR: Command errored out with exit status 1: python setup.py egg_info Check the logs for full command output.
  remote:  !     Push rejected, failed to compile Python app.
  </code></pre>
  <pre class="lang-py prettyprint-override"><code>app = Flask(__name__)
  
  app.config.from_pyfile('settings.py')
  
  ##where to find the database and initialize SQLAlchemy
  app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///congress.sqlite3'
  db = SQLAlchemy(app) 
  
  ##option to tell SQLALchemy that we’re way too lazy to do that, and for every model it should just 
  #look at the columns that already exist in the table. This is called reflecting
  db.Model.metadata.reflect(db.engine)
  
  class Congress(db.Model):
      __tablename__ = 'sen'
      __table_args__ = { 'extend_existing': True }
      id = db.Column(db.Text, primary_key=True) 
  
  
  ## access sass
  app.wsgi_app = SassMiddleware(app.wsgi_app, {
      'app': ('static/assets/sass', 'app/static/assets/css/light-bootstrap-dashboard.css', 'app/static/assets/css/light-bootstrap-dashboard.css')
  })
  
  # Ensure templates are auto-reloaded
  app.config[&quot;TEMPLATES_AUTO_RELOAD&quot;] = True
  
  # Custom filter
  app.jinja_env.filters[&quot;usd&quot;] = usd
  
  from app import routes```
  </code></pre>