Django集成WebSocket报错:ModuleNotFoundError: No module named 'daphnedjango'
Django + Daphne 报错 ModuleNotFoundError: No module named 'daphnedjango'
核心问题
不存在名为daphnedjango的Python包,你遇到的错误是拼写错误导致的——正确的包名是daphne,你可能在某个配置文件里误将其写为daphnedjango。
排查与修复步骤
检查
settings.py的INSTALLED_APPS
打开项目根目录的settings.py,确认INSTALLED_APPS列表顶部的条目是'daphne',而非'daphnedjango'。新项目正常运行是因为你严格按照文档配置了正确的包名,旧项目大概率是手滑多输入了字符。全局搜索错误字符串
在项目根目录下执行终端命令,快速定位所有包含错误拼写的文件:grep -r "daphnedjango" .找到后将所有
daphnedjango替换为daphne即可。验证ASGI配置正确性
检查asgi.py文件,确保没有导入daphnedjango的错误代码,正确的ASGI启动框架示例如下:import os from django.core.asgi import get_asgi_application from channels.routing import ProtocolTypeRouter, URLRouter from channels.auth import AuthMiddlewareStack import your_app.routing os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'your_project.settings') application = ProtocolTypeRouter({ "http": get_asgi_application(), "websocket": AuthMiddlewareStack( URLRouter( your_app.routing.websocket_urlpatterns ) ), })确认虚拟环境依赖
确保旧项目的虚拟环境中已正确安装Daphne和Channels:pip list | grep -E "(daphne|channels)"若未安装,执行安装命令:
pip install daphne channels
内容的提问来源于stack exchange,提问作者bdempe
相关产品推荐
相关产品推荐

