When I try to push my django app to heroku it fails right at the beginning:
remote: -----> Python app detected
remote: -----> Installing python-3.5.1
remote: -----> Installing pip
remote: -----> Installing requirements with pip
remote: /app/tmp/buildpacks/779a8bbfbbe7e1b715476c0b23fc63a2103b3e4131eda558669aba8fb5e6e05682419376144189b29beb5dee6d7626b4d3385edb0954bffea6c67d8cf622fd51/
bin/steps/pip-install: line 5: /app/.heroku/python/bin/pip:
No such file or directory
remote: ! Push rejected, failed to compile Python app.
remote:
I apparently do something wrong, but I did the same thing many times before. What's wrong?
I had this exact same problem yesterday and it was really frustrating as I had deployed to Django before under the exact same settings with no problem.
In your runtime.txt file change it from:
python-3.5.1
to
python-3.6.1
Why changing the Python version on Heroku matters beats me but it worked like a charm.
Related
Below you can find the logs. Am I missing something here?
-----> Building on the Heroku-20 stack
-----> Using buildpack: heroku/python
-----> Python app detected
-----> No Python version was specified. Using the same version as the last build: python-3.10.5
To use a different version, see: https://devcenter.heroku.com/articles/python-runtimes
-----> No change in requirements detected, installing from cache
-----> Using cached install of python-3.10.5
-----> Installing pip 22.1.2, setuptools 60.10.0 and wheel 0.37.1
-----> Installing SQLite3
-----> Installing requirements with pip
Ignoring backports.zoneinfo: markers 'python_version < "3.9"' don't match your environment
-----> $ python manage.py collectstatic --noinput
Found another file with the destination path 'admin/js/cancel.js'. It will be ignored since only the first
encountered file is collected. If this is not what you want, make
sure every static file has a unique path.
Found another file with the destination path 'admin/js/popup_response.js'. It will be ignored since only the
first encountered file is collected. If this is not what you want,
make sure every static file has a unique path.
1451 static files copied to '/tmp/build_9c61124b/static_cdn', 111 unmodified.
-----> Discovering process types
-----> Compressing...
Done: 116.3M
-----> Launching...
Released v13
https://dgrealstate.herokuapp.com/ deployed to Heroku
This app is using the Heroku-20 stack, however a newer stack is available.
To upgrade to Heroku-22, see:
https://devcenter.heroku.com/articles/upgrading-to-the-latest-stack
Python 3.8.3, Scrapy 2.2.0 and Twisted-20.3.0-cp38-cp38-win_amd64.whl are installed on my computer. Everything works as expected.
I can’t install Scrapy without Twisted, so Twisted is also installed, but when I try to transfer the application to Heroku, an error appears. How do I use Scrapy on Heroku?
-----> Found python-3.6.10, removing
-----> Requirements file has been changed, clearing cached dependencies
-----> Installing python-3.8.3
-----> Installing pip
-----> Installing SQLite3
-----> Installing requirements with pip
ERROR: Twisted-20.3.0-cp38-cp38-win_amd64.whl is not a supported wheel on this platform.
! Push rejected, failed to compile Python app.
! Push failed```
Remove Twisted-20.3.0-cp38-cp38-win_amd64.whl in your requirement.txt
I don't think it's required because while installing scrapy it will be taken care of
My Python app on Heroku failed to build consistently:
-----> Python app detected
! Python has released a security update! Please consider upgrading to python-3.6.8
Learn More: https://devcenter.heroku.com/articles/python-runtimes
-----> Found python-3.6.4, removing
-----> Installing python-3.6.7
-----> Installing pip
-----> Installing SQLite3
! Push rejected, failed to compile Python app.
! Push failed
It is a Django application that runs fine locally.
python-3.6.7 specified in runtime.txt, and I've tried other versions.
My Procfile contains:
release: python <appname>/manage.py migrate
web: python <appname>/manage.py runserver 0.0.0.0:$PORT
I could probably use gunicorn but that's irrelevant here. The build logs doesn't seem to provide me any information.
requirements.txt
chardet==3.0.4
Django==2.0.2
idna==2.6
pytz==2018.3
requests==2.18.4
urllib3==1.22
dj-database-url==0.5.0
setuptools==1.0.0
Try this in your app.json. Although it a temporary solution
"buildpacks": [
{
"url": "https://github.com/heroku/heroku-buildpack-python.git#remove-
sqlite"
},
See: https://travis-ci.org/heroku/heroku-buildpack-python
Upgrade the the stack from heroku-16 to heroku-18 in app.json.
I am a novice and don't understand many of the concepts, so excuse me if there are some ambiguities or plain fallacies in my statements and questions.
I am writing a web app using Flask python framework. I have already tested it on localhost. Now I want to deploy it to heroku's webserver.
Here is the folder where the main files are stored:
static #this is a folder
templates #this is a folder
Procfile
requirements.txt
runtime.txt
app.py
Now here are the contents of Procfile, requirements.txt and runtime.txt respectively:
Procfile:
web: gunicorn app:app
requirements.txt:
Flask==0.12.2
gunicorn==19.7.1
itsdangerous==0.24
Jinja2==2.9.6
MarkupSafe==1.0
Werkzeug==0.12.2
runtime.txt:
python-2.7.1
Now, it was python-3.5.1 in runtime.txt , before I had the problem but now during debugging I've left it as 2.7.1, because there's another problem I find.
Now when I try to execute the command: git push heroku master, the following ouptut is generated:
Counting objects: 13, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (9/9), done.
Writing objects: 100% (13/13), 1.95 KiB | 0 bytes/s, done.
Total 13 (delta 0), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Python app detected
remote: -----> Installing python-3.5.1
remote: -----> Installing pip
remote: -----> Installing requirements with pip
remote:
/app/tmp/buildpacks/{somelonghash}/bin/steps/pip-
install: line 7: /app/.heroku/python/bin/pip: No such file or
directory
remote: ! Push rejected, failed to compile Python app.
remote:
remote: ! Push failed
remote: Verifying deploy...
remote:
remote: ! Push rejected to joecrownwebapp.
remote:
To https://git.heroku.com/joecrownwebapp.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to
'https://git.heroku.com/joecrownwebapp.git'
Where {somelonghash} was some long hash which for the purposes of this question I've removed. Now as you can see first the app is being deployed with python-3.5.1 which is strange given the fact that I've specified in runtime.txt that the runtime should be for example 2.7.1. Now we also see that pip is being installed and thereafter the requirements are being installed with pip and that is where the problem occurs.
The first question that comes to my mind is: Where exactly is this "/app/.heroku/python/bin/pip:" directory supposed to be, or for that matter "/app/tmp/buildpacks/{somelonghash}/bin/steps/pip-
install"?
Are they somewhere on my machine? (I figure not because if they are unix-based pathnames, then app should be directly under root, but I dont have such a folder)
If they are not on my machine where are they, how can I locate them and examine them. Are they somewhere on the Heroku server. If so, where does my problem arise from? Why is my runtime.txt disregarded?
Any ideas would be greatly appreciated!
I'm trying to deploy to heroku and have my requirements.txt, Procfile, and app.py file in the root directory. I created my heroku instance with heroku create --buildpack heroku/python but I still get
remote: ! Push rejected, failed to detect set buildpack heroku/python
remote: More info: https://devcenter.heroku.com/articles/buildpacks#detection-failure
remote:
remote: Verifying deploy...
remote:
remote: ! Push rejected to desolate-basin-41623.
remote:
I've gone onto several forums and can't really seem to figure out why that is. I'm also pushing from the master branch, which seems to be something people overlook.
I did, however, I initialized my git instance above the root directory.
I figured it out, it turns out that you do have to have github initialized inside of your root.