ImportError:没有名为asgi的模块

时间:2016-03-28 20:35:51

标签: django python-3.x channels

为什么:

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

5 个答案:

答案 0 :(得分:1)

您创建的asgi.py文件很可能位于错误的目录中。

它应与settings.py和wsgi.py文件位于同一目录中。

答案 1 :(得分:1)

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

pip install -U asgi_redis

答案 2 :(得分:1)

我能够解决此问题;如果您使用的是通道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()
    

您可以看到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之类的内容,则可以将工作目录设置为相同的位置。