Streamlit应用持续显示‘Please wait...’且终端抛出TypeError: Protocols cannot be instantiated错误的技术求助
解决Streamlit启动卡顿(显示“Please wait...”)并报“Protocols cannot be instantiated”错误
我之前也碰到过一模一样的问题,直接给你可行的解决步骤和原因分析:
快速修复步骤
- 降级Tornado到兼容版本:这个错误的核心是Tornado新版本和Python 3.9的
typing模块不兼容,执行下面的命令安装经过验证的兼容版本:pip install tornado==6.1 - 重启应用:安装完成后,关闭当前的Streamlit进程,重新运行
streamlit run app.py,界面应该就能正常加载了。
错误原因详解
你看到的TypeError: Protocols cannot be instantiated,是因为Tornado的新版本(比如6.2及以上)在Python 3.9环境中,内部代码错误地尝试实例化了typing.Protocol类。根据Python的类型规范,Protocol是用来定义接口协议的,本身不能被直接实例化。
Python 3.9的typing模块对Protocol的实现和后续Python版本有差异,而Tornado的新版本没有做好向下兼容,所以降级到Tornado 6.1就能解决这个冲突——这个版本在Python 3.9环境下是完全兼容的。
额外排查建议
- 确保你是在项目的虚拟环境(venv)里执行的安装命令,避免影响全局Python环境的包版本
- 如果降级后还是有问题,可以尝试删除项目根目录下的
.streamlit缓存文件夹,清除旧缓存后再重启应用
内容的提问来源于stack exchange,提问作者gunjan verma
相关产品推荐
相关产品推荐

