为什么:
from channels.asgi import get_channel_layer
结果:
from channels.asgi import get_channel_layer
ImportError: No module named asgi
我正在使用Django(1.9)和python(3.4)。并且,在pycharm中进行编辑时,我看到IDE正在为我提供快速提示。
答案 0 :(得分:1)
您创建的asgi.py文件很可能位于错误的目录中。
它应与settings.py和wsgi.py文件位于同一目录中。
答案 1 :(得分:1)
确保你已安装它并仔细检查你是否已经激活了virtualenv。
pip install -U asgi_redis
答案 2 :(得分:1)
我能够解决此问题;如果您使用的是通道2,则通道层与旧版本完全不同。
我建议您尝试以下操作:
确认已在settings.py
上配置了通道层:
CHANNEL_LAYERS = {
"default": {
"BACKEND": "channels_redis.core.RedisChannelLayer",
"CONFIG": {
"hosts": [("redis-server-name", 6379)],
},
},
}
希望您已使用Redis安装了Redis。
将频道层添加到asgi.py
文件中:
from channels.layers import get_channel_layer
channel_layer = get_channel_layer()
您可以看到this解决方案。
答案 3 :(得分:0)
使用
pip show channels
查看软件包的版本。
在版本0.9之前,channels.asgi不存在:
https://github.com/andrewgodwin/channels/tree/0.8/channels https://github.com/andrewgodwin/channels/tree/0.9/channels
答案 4 :(得分:0)
当我调试服务器并从命令行运行daphne命令时,我遇到了这个问题。我正在运行一个命令:
/home/myuser/.virtualenvs/playmy/bin/python /home/myuser/.virtualenvs/myapp/bin/daphne -b 0.0.0.0 -p 8080 core.asgi:channel_layer
它仍然失败。事实证明我必须cd
进入与manage.py
相同的目录才能使其运行。如果您使用systemctl
之类的内容,则可以将工作目录设置为相同的位置。