ResolutionImpossible - Conflicting dependencies while deploying on heroku
Во время развертывания проекта Django + React на Heroku возникла эта ошибка:
Конфликт вызван тем, что: djoser 2.1.0 зависит от social-auth-app-django<5.0.0 и >=4.0.0
. rest-social-auth 8.0.0 зависит от social-auth-app-django<6.0 и >=5.0
Если я понижаю версию до social-auth-app-django==4.0.0 pkg, то получаю эту ошибку:
raise ImproperlyConfigured( django.core.exceptions.ImproperlyConfigured: WSGI-приложение 'backend.wsgi.application' не может быть загружено; Ошибка импорта модуля.
.
Эта ошибка вызвана social_django
, который добавлен в settings.py
MIDDLEWARE = [
....
# For social auth
'social_django.middleware.SocialAuthExceptionMiddleware',
....
]
Исправил эту ошибку, удалив/закомментировав ее, затем нашел другую:
cannot import name 'urlquote' from 'django.utils.http' (lib\site-packages\django\utils\http.py)
Поскольку urlquote()
больше не доступен в версиях Django 4.0+, после понижения версии social-auth-app-django==4.0.0.
pkg.
Эта попытка импортировать from django.utils.http import urlquote
в файл lib\site-packages\social_django\context_processors.py
.
Я нахожусь в аду зависимостей. Я даже пытался понизить версию пакета djoser
, но получил другие ошибки.
После долгих поисков я нашел этот blog post, согласно этому:
Сначала pip install pip-tools
создайте requirements.in
файл и добавьте
django
djangorestframework
затем выполните pip-compile ./requirements.in
это создаст requirements.txt
файл:
# This file is autogenerated by pip-compile with Python 3.9
# by the following command:
#
# pip-compile ./requirements.in
#
asgiref==3.6.0
# via django
django==4.1.5
# via
# -r ./requirements.in
# djangorestframework
djangorestframework==3.14.0
# via -r ./requirements.in
pytz==2022.7.1
# via djangorestframework
sqlparse==0.4.3
# via django
tzdata==2022.7
# via django
Но этот файл не содержит других пакетов, таких как:
django-cors-headers,
djoser,
PyJWT
rest-social-auth
social-auth-app-django,
etc....
Пожалуйста, помогите мне с этим вопросом, любой ресурс, который может мне помочь.