Docker容器中出现AttributeError:websocket模块无WebSocketApp属性
问题解决:Docker中运行WebSocketApp报AttributeError
核心原因
你的requirements.txt同时包含了websocket==0.2.1和websocket-client==1.6.4,这两个包存在模块名冲突:
websocket-client是提供WebSocketApp的正确库,它的模块名是websocketwebsocket==0.2.1是一个过时的第三方库,同样使用websocket作为模块名,安装后会覆盖前者的模块导入,导致找不到WebSocketApp属性
解决方案
修改requirements.txt:删除其中的
websocket==0.2.1一行,保留websocket-client==1.6.4
修正后的requirements.txt内容:gevent==23.9.1 greenlet==3.0.1 pytz==2023.3.post1 websocket-client==1.6.4 websockets==12.0 zope.event==5.0 zope.interface==6.1重新构建Docker镜像并运行:
docker build -t ws-test . docker run ws-test代码无需修改:
websocket-client安装完成后,import websocket会正确导入包含WebSocketApp的模块,原有代码可正常执行。
额外说明
- 本地环境可能因安装顺序或虚拟环境隔离未触发冲突,但Docker是全新构建环境,冲突直接显现
websockets是独立的异步WebSocket库,与websocket-client无冲突,可保留在依赖中
内容的提问来源于stack exchange,提问作者Craig Palmer
相关产品推荐
相关产品推荐

