Streamlit加载模型时触发tarfile.ReadError:文件无法成功打开
问题解决方法
1. 修正文件路径问题
Streamlit运行时的工作目录大概率和你本地脚本的工作目录不一样,导致相对路径找不到模型文件。你可以基于当前脚本的位置构建绝对路径:
import os # 获取当前脚本所在的绝对目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接模型文件的完整路径 model_path = os.path.join(script_dir, 'saved_models', 'model.pkl') model = pickle.load(open(model_path, 'rb'))
2. 改用Keras官方加载方式
从报错栈能看到,你的模型是Keras模型,直接用pickle加载容易出问题。建议用Keras自带的加载方法:
from keras.models import load_model # 如果保存时用的是.h5格式,把后缀改成.h5即可 model = load_model('saved_models/model.pkl')
3. 检查文件状态
- 确认
saved_models/model.pkl文件确实存在,且没有损坏,必要时重新保存一次模型。 - 检查文件权限:确保Streamlit运行进程能读取该文件,比如不要把文件设置为仅当前用户私有,也不要让其他程序占用该文件。
内容的提问来源于stack exchange,提问作者Ovi Burcea
相关产品推荐
相关产品推荐

