导入错误:没有名为 asgi 的模块

问题描述 投票:0回答:5

为什么:

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 为我提供了快速提示。

django python-3.x channel
5个回答
3
投票

我能够解决这个问题;如果您使用通道 2,通道层与旧版本有很大不同。

我建议您尝试以下方法:

  1. 确认您已在

    settings.py
    上配置通道层:

    CHANNEL_LAYERS = {
        "default": {
            "BACKEND": "channels_redis.core.RedisChannelLayer",
            "CONFIG": {
                "hosts": [("redis-server-name", 6379)],
            },
        },
    }
    

    如果使用redis,希望你已经安装了redis。

  2. 将通道层添加到

    asgi.py
    文件:

    from channels.layers import get_channel_layer
    
    channel_layer = get_channel_layer()
    

您可以看到这个解决方案。


2
投票

确保您已安装它并仔细检查您是否已激活 virtualenv。

pip install -U asgi_redis

1
投票

使用

pip show channels

查看您的软件包的版本。

channels.asgi 直到 0.9 版本才出现:

https://github.com/andrewgodwin/channels/tree/0.8/channels https://github.com/andrewgodwin/channels/tree/0.9/channels


1
投票

我在调试服务器并从命令行运行 daphne 命令时遇到了这个问题。我正在运行这样的命令:

/home/myuser/.virtualenvs/myapp/bin/python /home/myuser/.virtualenvs/myapp/bin/daphne -b 0.0.0.0 -p 8080  core.asgi:channel_layer

但仍然失败。结果我必须

cd
进入与
manage.py
相同的目录才能运行它。如果您使用类似
systemctl
的内容,则只需将工作目录设置为相同位置即可。


1
投票

对 StackOverflow 将我的数据出售给 AI 不感兴趣。

© www.soinside.com 2019 - 2024. All rights reserved.