Нет модуля с именем ‘asgiref.base_layer’

#python #django #django-channels

Вопрос:

При запуске моего сервера (python manage.py запустите сервер) Я получаю следующую ошибку.

Файл «/Users/thomasallen/PycharmProjects/Channels_and_Signals/venv/lib/python3.9/site-packages/asgi_redis/core.py», строка 19, в из asgiref.base_layer импортируйте модуль базового уровня. Не найдено ни одного модуля с именем «asgiref.base_layer»

Оскорбительная строка 19 в …/core.py это

 from asgiref.base_layer import BaseChannelLayer
 

Пакеты, которые я установил, являются:
Django 3.2.4
каналы 3.0.3
каналы-переделано 3.2.0
желаемое 3.3.4
asgi-переделано 1.1.0

Я не уверен, в чем заключается несоответствие.

Ответ №1:

Это потому asgi_redis , что 1.1.0 зависит от старой версии asgiref (перечисленной без верхней границы, как asgiref>=1.0.0 в их setup.py), в котором раньше был этот код. Но у вас установлена более поздняя версия, потому что от нее зависит Django asgiref >= 3.3.2 .

У вас не должно быть ни asgi_redis channels_redis того, ни другого, ни установленного, это разные версии одного и того же пакета. Смотрите примечание в репо git channels_redis:

Примечание.Предыдущие версии этого пакета назывались asgi_redis и по-прежнему доступны под этим именем PyPI, если они нужны для проектов Channels 1.x. Этот пакет предназначен только для проектов Channels 2.

Ваше решение состоит в том, чтобы не использовать asgi_redis и использовать channels_redis вместо этого.