简体   繁体   中英

Django app push rejected on Heroku when upgrading to python 3.6.5

When pushing my Django app to Heroku, I am receiving this warning

remote: -----> Python app detected
remote:  !     The latest version of Python 3 is python-3.6.5 (you are using python-3.6.4, which is unsupported).
remote:  !     We recommend upgrading by specifying the latest version (python-3.6.5).
remote:        Learn More: https://devcenter.heroku.com/articles/python-runtimes

But I am getting an error when trying to update the python version. In my local environment, it is already python 3.6.5, so I just update my runtime.txt file switching python-3.6.4 to python-3.6.5 .

However, this is raising an error when pushing the app. Strange enough, the error is not always the same.

One example:

remote: Building source:
remote: 
remote: -----> Python app detected
remote: -----> Found python-3.6.4, removing
remote: -----> Installing python-3.6.5
remote: -----> Installing pip
remote: -----> Installing dependencies with Pipenv 11.8.2…
remote:        Installing dependencies from Pipfile…
remote:        An error occurred while installing pysocks==1.6.5! Will try again.
remote:        An error occurred while installing pytz==2017.2! Will try again.
remote:        An error occurred while installing pyyaml==3.12! Will try again.
remote:        An error occurred while installing requests==2.12.4! Will try again.
remote:        An error occurred while installing rq-dashboard==0.3.8! Will try again.
remote:        An error occurred while installing selenium==3.0.2! Will try again.
remote:        An error occurred while installing static3==0.7.0! Will try again.
remote:        An error occurred while installing urllib3==1.19.1! Will try again.
remote:        An error occurred while installing user-agents==1.0.1! Will try again.
remote:        An error occurred while installing werkzeug==0.12.2! Will try again.
remote:        An error occurred while installing whitenoise! Will try again.
remote:        An error occurred while installing xmltodict==0.11.0! Will try again.
remote:        Installing initially–failed dependencies…
remote:        Success installing pysocks==1.6.5!
remote:        Success installing pytz==2017.2!
remote:        Success installing pyyaml==3.12!
remote:        Success installing requests==2.12.4!
remote:        Success installing rq-dashboard==0.3.8!
remote:        Success installing selenium==3.0.2!
remote:        Success installing static3==0.7.0!
remote:        Success installing urllib3==1.19.1!
remote:        Success installing user-agents==1.0.1!
remote:        Success installing werkzeug==0.12.2!
remote:        Success installing whitenoise!
remote:        Success installing xmltodict==0.11.0!
remote: -----> $ python manage.py collectstatic --noinput
remote:        Traceback (most recent call last):
remote:          File "manage.py", line 10, in <module>
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 347, in execute
remote:            django.setup()
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/__init__.py", line 16, in setup
remote:            from django.urls import set_script_prefix
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/urls/__init__.py", line 1, in <module>
remote:            from .base import (
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/urls/base.py", line 8, in <module>
remote:            from .exceptions import NoReverseMatch, Resolver404
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/urls/exceptions.py", line 1, in <module>
remote:            from django.http import Http404
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/http/__init__.py", line 5, in <module>
remote:            from django.http.response import (
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/http/response.py", line 13, in <module>
remote:            from django.core.serializers.json import DjangoJSONEncoder
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/core/serializers/__init__.py", line 23, in <module>
remote:            from django.core.serializers.base import SerializerDoesNotExist
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/core/serializers/base.py", line 6, in <module>
remote:            from django.db import models
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/__init__.py", line 16, in <module>
remote:            from django.db.models.indexes import *  # NOQA
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/indexes.py", line 3, in <module>
remote:            from django.db.backends.utils import split_identifier
remote:        ImportError: cannot import name 'split_identifier'
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:
remote: 
remote:           $ heroku config:set DISABLE_COLLECTSTATIC=1
remote: 
remote:        https://devcenter.heroku.com/articles/django-assets
remote:  !     Push rejected, failed to compile Python app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !   Push rejected to myapp.
remote: 
To https://git.heroku.com/myapp.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/myapp.git'

Another example:

remote: Building source:
remote: 
remote: -----> Python app detected
remote: -----> Found python-3.6.4, removing
remote: -----> Installing python-3.6.5
remote: -----> Installing pip
remote: -----> Installing dependencies with Pipenv 11.8.2…
remote:        Installing dependencies from Pipfile…
remote:        An error occurred while installing pysocks==1.6.5! Will try again.
remote:        An error occurred while installing pytz==2017.2! Will try again.
remote:        An error occurred while installing pyyaml==3.12! Will try again.
remote:        An error occurred while installing requests==2.12.4! Will try again.
remote:        An error occurred while installing rq-dashboard==0.3.8! Will try again.
remote:        An error occurred while installing selenium==3.0.2! Will try again.
remote:        An error occurred while installing static3==0.7.0! Will try again.
remote:        An error occurred while installing urllib3==1.19.1! Will try again.
remote:        An error occurred while installing user-agents==1.0.1! Will try again.
remote:        An error occurred while installing werkzeug==0.12.2! Will try again.
remote:        An error occurred while installing whitenoise! Will try again.
remote:        An error occurred while installing xmltodict==0.11.0! Will try again.
remote:        Installing initially–failed dependencies…
remote:        Success installing pysocks==1.6.5!
remote:        Success installing pytz==2017.2!
remote:        Success installing pyyaml==3.12!
remote:        Success installing requests==2.12.4!
remote:        Success installing rq-dashboard==0.3.8!
remote:        Success installing selenium==3.0.2!
remote:        Success installing static3==0.7.0!
remote:        Success installing urllib3==1.19.1!
remote:        Success installing user-agents==1.0.1!
remote:        Success installing werkzeug==0.12.2!
remote:        Success installing whitenoise!
remote:        Success installing xmltodict==0.11.0!
remote: -----> $ python manage.py collectstatic --noinput
remote:        Traceback (most recent call last):
remote:          File "manage.py", line 8, in <module>
remote:            from django.core.management import execute_from_command_line
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 13, in <module>
remote:            from django.core.management.base import (
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 17, in <module>
remote:            from django.db.migrations.exceptions import MigrationSchemaMissing
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/db/migrations/__init__.py", line 2, in <module>
remote:            from .operations import *  # NOQA
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/db/migrations/operations/__init__.py", line 1, in <module>
remote:            from .fields import AddField, AlterField, RemoveField, RenameField
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/db/migrations/operations/fields.py", line 2, in <module>
remote:            from django.db.models.fields import NOT_PROVIDED
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/__init__.py", line 19, in <module>
remote:            from django.db.models.manager import Manager
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/manager.py", line 6, in <module>
remote:            from django.db.models.query import QuerySet
remote:          File "/app/.heroku/python/lib/python3.6/site-packages/django/db/models/query.py", line 26, in <module>
remote:            from django.utils.deprecation import RemovedInDjango30Warning
remote:        ImportError: cannot import name 'RemovedInDjango30Warning'
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:
remote: 
remote:           $ heroku config:set DISABLE_COLLECTSTATIC=1
remote: 
remote:        https://devcenter.heroku.com/articles/django-assets
remote:  !     Push rejected, failed to compile Python app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 
remote: !   Push rejected to myapp.
remote: 
To https://git.heroku.com/myapp.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/myapp.git'

I have seen similar questions such as this one , but the error is usually with the static folder, which is not my case.

Notes

  • If I push the app without upgrading to python 3.6.5 the error is not raised.

  • I recently replaced my old MacBook with a newer one. As everything works fine if I don't try to upgrade the python version, I guess this has nothing to do, but just in case, I thought it worth mentioning.

Any idea of why is this happening and how can I resolve it?

Not sure the reason, but it eventually worked.

I will try to explain the steps here, in case it helps anybody else.

I waited until the newest version of python recommended by heroku was 3.6.6 instead of 3.6.5.

Then I did the following steps:

  • changed my runtime.txt to 3.6.6
  • changed my runtime.txt to 3.7.0
  • move back to runtime.txt to 3.6.6
  • removed the django-lockdown I had installed but I was not using
  • upgraded the pip package in my local environment
  • I run pip freeze > requirements.txt

I still saw some errors during the push, but somehow the release worked.

remote:        Installing dependencies from Pipfile…
remote:        An error occurred while installing pysocks==1.6.5! Will try again.
remote:        An error occurred while installing pytz==2017.2! Will try again.
remote:        An error occurred while installing pyyaml==3.12! Will try again.
remote:        An error occurred while installing requests==2.12.4! Will try again.
remote:        An error occurred while installing rq==0.7.1! Will try again.
remote:        An error occurred while installing rq-dashboard==0.3.8! Will try again.
remote:        An error occurred while installing selenium==3.0.2! Will try again.
remote:        An error occurred while installing static3==0.7.0! Will try again.
remote:        An error occurred while installing urllib3==1.19.1! Will try again.
remote:        An error occurred while installing user-agents==1.0.1! Will try again.
remote:        An error occurred while installing werkzeug==0.12.2! Will try again.
remote:        An error occurred while installing whitenoise! Will try again.
remote:        An error occurred while installing xmltodict==0.11.0! Will try again.
remote:        Installing initially–failed dependencies…
remote:        Success installing pysocks==1.6.5!
remote:        Success installing pytz==2017.2!
remote:        Success installing pyyaml==3.12!
remote:        Success installing requests==2.12.4!
remote:        Success installing rq==0.7.1!
remote:        Success installing rq-dashboard==0.3.8!
remote:        Success installing selenium==3.0.2!
remote:        Success installing static3==0.7.0!
remote:        Success installing urllib3==1.19.1!
remote:        Success installing user-agents==1.0.1!
remote:        Success installing werkzeug==0.12.2!
remote:        Success installing whitenoise!
remote:        Success installing xmltodict==0.11.0!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM