没有名为 'asgiref.base_layer' 的模块

No module named 'asgiref.base_layer'

启动我的服务器(python manage.py 运行 服务器)时出现以下错误。

文件“/Users/thomasallen/PycharmProjects/Channels_and_Signals/venv/lib/python3.9/site-packages/asgi_redis/core.py”,第 19 行,在 来自 asgiref.base_layer 导入 BaseChannelLayer ModuleNotFoundError:没有名为 'asgiref.base_layer'

的模块

.../core.py 中有问题的第 19 行是

from asgiref.base_layer import BaseChannelLayer

我安装的包有: 姜戈 3.2.4 频道 3.0.3 频道重做 3.2.0 渴望 3.3.4 asgi-redis 1.1.0

我不确定哪里不匹配。

这是因为 asgi_redis 1.1.0 依赖于旧版本的 asgiref(在他们的 setup.py 中没有上限列出为 asgiref>=1.0.0)曾经有这个代码。但是你安装了更新的版本,因为 Django 依赖于 asgiref >= 3.3.2.

你不应该同时安装 asgi_redischannels_redis,它们是同一个包的不同版本。请参阅 channels_redis git repo 中的注释:

Note: Prior versions of this package were called asgi_redis and are still available under PyPI as that name if you need them for Channels 1.x projects. This package is for Channels 2 projects only.

您的解决方案是不使用 asgi_redis 而是使用 channels_redis