部署Streamlit应用共享时出现sklearn模型相关报错如何解决?
部署sklearn相关报错排查解决方法
核心原因
该类报错90%以上是本地训练模型的scikit-learn版本与Streamlit部署环境的scikit-learn版本不匹配导致的序列化模型加载失败。
具体解决步骤
- 首先在本地开发环境终端执行命令
pip show scikit-learn,查询本地训练时使用的scikit-learn具体版本号。 - 在项目根目录新增
requirements.txt文件,明确指定所有依赖的版本,需保证scikit-learn的版本和本地查询到的完全一致,示例内容如下:
streamlit==1.28.0 pandas==2.1.3 numpy==1.24.3 scikit-learn==1.3.2 # 此处替换为你本地查询到的实际版本号 joblib==1.3.2
- 检查模型加载代码,优先使用joblib进行模型的序列化与反序列化操作,避免原生pickle的兼容性问题,示例代码:
import joblib # 加载模型代码 loan_model = joblib.load("你的模型文件名.pkl")
- 若修改后仍报错,在本地scikit-learn版本和
requirements.txt指定版本一致的前提下,重新导出训练好的模型,替换仓库中旧的模型文件。 - 检查模型文件是否完整上传到代码仓库:若模型文件大小超过100M,需使用Git LFS上传,否则文件会被截断无法正常加载。
- 所有修改推送至代码仓库后,触发Streamlit平台重新部署即可。
内容的提问来源于stack exchange,提问作者Tshering Tashi
相关产品推荐
相关产品推荐

