Skip to content Skip to sidebar Skip to footer

Heroku Can't Find Gunicorn Command

I'm trying to put a small Flask app on Heroku. When it starts, it gives me the following message, from the logs: 2015-03-11T01:05:26.737788+00:00 heroku[web.1]: State changed from

Solution 1:

Add gunicorn to requirements.txt.

In pursuit of 12-factor apps, changes to the filesystem made with heroku run are ephemeral.

Solution 2:

I ran into this same issue. After doing some research, I found this tutorial where they explain that any "local" changes (like importing/using a new module) must be "installed" in the heroku app using pipenv. So in this case what I did was:

$ pipenv install gunicorn

This will "install" gunicorn in you app and add an entry into your (or create a new) Pipfile, which is how Heroku keeps track of the dependencies it needs to install for your app (I believe the use of requirements.txt is still supported, but not what they recommend).

Then, in order to 'activate' the pip environment that has gunicorn installed you must run:

$ pipenv shell

NOTE: You can test whether it worked or not by running $ heroku local

$ heroku local
[WARN] No ENV file found
23:10:25 web.1   |  /bin/sh: gunicorn: command not found
23:10:25 web.1   Exited with exit code 127

With pip environment activated:

$ pipenv shell
Spawning environment shell (/bin/bash). Use 'exit' to leave.
. /Users/carlos/.local/share/virtualenvs/app-jKOcg6b1/bin/activate
bash-3.2$ . /Users/carlos/.local/share/virtualenvs/app-jKOcg6b1/bin/activate
(app-jKOcg6b1) bash-3.2$ heroku local
[WARN] No ENV file found
06:31:12 web.1   |  [2018-06-05 06:31:12 -0600] [28531] [INFO] Starting gunicorn 19.8.1
06:31:13 web.1   |  [2018-06-05 06:31:12 -0600] [28531] [INFO] Listening at: http://0.0.0.0:5000 (28531)
06:31:13 web.1   |  [2018-06-05 06:31:12 -0600] [28531] [INFO] Using worker: sync
06:31:13 web.1   |  [2018-06-05 06:31:12 -0600] [28535] [INFO] Booting worker with pid: 28535

Solution 3:

I had this problem running Ubuntu 18.04.2 LTS bionic. The solution was to update my PATH variable!

In ~/.profile I added the lines:

if [ -d "$HOME/.local" ] ; then
    PATH="$HOME/.local:$PATH"fiif [ -d "$HOME/.local/bin" ] ; then
    PATH="$HOME/.local/bin:$PATH"fi

I changed the "runtime.txt" to match my version of Python 3. I'm not sure whether that was necessary, but now it is python-3.6.7

Also, because I have various versions of python and pip installed, my commands to install and run locally were:

python3 -m venv getting-started
pip3 install -r requirements.txt
python3 manage.py migrate #I had already created the database
python3 manage.py collectstatic
heroku local

Solution 4:

Here's a checklist:

  1. Install Gunicorn on your local environment and add it to the requirements.txt using pip freeze > requirements.txt. Commit the changes to Heroku.

  2. Remove Pipfile and Pipfile.lock from Heroku and your local environment. Just keep the requirements.txt.

Post a Comment for "Heroku Can't Find Gunicorn Command"