在Flask中加载pickle文件失败,报tarfile.ReadError错误求助
Flask加载Pickle文件时遇到tarfile.ReadError的解决办法
你遇到的tarfile.ReadError: file could not be opened successfully错误,大概率和文件本身、路径或读取方式有关,以下是针对性的解决步骤:
检查文件路径与完整性
首先确认Stocks1.pkl和app.py在同一目录下,可通过代码验证:import os print(os.path.exists('Stocks1.pkl'))如果输出
False,说明文件路径错误,需要修正路径(比如用绝对路径/full/path/to/Stocks1.pkl);如果输出True,尝试手动打开文件,若文件无法正常打开或内容异常,说明文件损坏,需重新获取或生成正确的pickle文件。确认文件是否为标准Pickle格式
有些模型文件可能被打包成tar格式却被命名为.pkl,直接用pickle读取就会触发tarfile错误。可以尝试先解压:import tarfile with tarfile.open('Stocks1.pkl', 'r') as tar: tar.extractall()解压后找到真正的pickle模型文件,再用
pickle.load()加载。另外要确认生成该文件时是用pickle.dump()导出的,而非其他打包工具。规范文件读取方式
你的代码中直接使用open()未关闭文件句柄,建议改用上下文管理器确保资源正确释放,同时保证读取模式为rb(二进制读):import pickle with open('Stocks1.pkl', 'rb') as f: model1 = pickle.load(f) prediction = model1.predict(Stock_name)排查环境依赖
确保当前Python环境和生成Stocks1.pkl时的环境依赖版本一致(比如scikit-learn、numpy等库),版本不兼容可能导致读取失败,可通过pip freeze对比两边的依赖列表。
内容的提问来源于stack exchange,提问作者Vedant Padole
相关产品推荐
相关产品推荐

