本地运行streamlit hello时出现WebSocket错误求助
解决Streamlit Hello页面WebSocket连接失败(缺少application和request参数)的问题
问题现象
运行streamlit hello后,浏览器仅显示闪烁的页面轮廓,无法正常加载;命令行和Chrome开发者工具持续触发WebSocket连接错误,核心报错为:
TypeError: WebSocketHandler.init() missing 2 required positional arguments: 'application' and 'request'
错误根源
该问题是Streamlit与Tornado版本不兼容导致的,Python 3.10的typing模块中_no_init_or_replace_init函数的逻辑,与部分Tornado版本的WebSocketHandler初始化流程冲突,引发参数缺失错误。
解决方案
方案1:锁定兼容的Tornado版本
针对Python 3.10,Streamlit兼容的稳定Tornado版本为6.3.3,操作步骤如下:
- 激活你的虚拟环境(如果使用):
strl_venv\Scripts\activate.bat - 卸载当前Tornado版本:
pip uninstall tornado -y - 安装指定兼容版本:
pip install tornado==6.3.3 - 重新运行Streamlit:
streamlit hello
方案2:检查端口占用情况
确认8501端口未被其他进程占用:
- 打开命令提示符,执行:
netstat -ano | findstr :8501 - 如果输出有进程ID,打开任务管理器结束对应进程,再重新启动Streamlit。
方案3:禁用WLS网络转发干扰
若WLS Ubuntu在后台运行,可能干扰本地网络连接:
- 打开命令提示符,执行:
wsl --shutdown - 关闭所有终端窗口,重新运行
streamlit hello。
内容的提问来源于stack exchange,提问作者lightsOnTampa
相关产品推荐
相关产品推荐

