You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从Azure Blob读取.pkl文件时触发UnpicklingError的问题求助

从Azure Blob读取.pkl文件时触发UnpicklingError的问题求助

我正在开发一个Azure Function,用来提供机器学习模型的推理服务。模型以.pkl文件的形式存储在Azure Blob Storage上,但所有尝试将文件读取到Python的操作都失败了。

为了简化测试,我用一个普通的.pkl文件代替实际的模型文件来复现问题。

本地生成验证.pkl文件的代码

import pickle

# 创建pickle文件
small_object = list(range(0,1000))
name = 'small_file.pkl'

with open(name, 'wb') as f:
    pickle.dump(small_object, f)

#### 验证文件完整性 ###

# 从本地磁盘加载
with open(name, 'rb') as f:
    opened_object_one = pickle.load(f)
print(opened_object_one) # 输出预期的列表

# 从字节流加载
with open('small_object.pkl', 'rb') as f:
    opened_object_two = f.read()
print(pickle.loads(opened_object_two)) # 输出预期的列表

Azure Function代码

import logging
import pickle

app = func.FunctionApp()

@app.route(route="http_trigger", auth_level=func.AuthLevel.FUNCTION)
@app.blob_input(
    arg_name = 'client', 
    path = '<container>/small_file.pkl', 
    connection ='AzureWebJobsStorage'
    )
def http_trigger(req: func.HttpRequest, client) -> func.HttpResponse:

    # `client` 的类型是 azure.functions.blob.InputStream
    package_bytes = client.read() # 返回字节数据
    client.close()

    small_object = pickle.loads(package_bytes)

问题重现步骤

我通过source .venv/scripts/activate进入虚拟环境(使用的是GitBash),然后用func host start本地运行函数,接着访问对应的localhost端点触发函数,此时控制台抛出错误:

Exception: UnpicklingError: invalid load key, '\xef'

已尝试的解决方法

  • 读写阶段分别尝试了joblib、dill和pickle库
  • 分别用Azure CLI和Firefox将pickle文件上传到Blob存储

但不管怎么尝试,都会出现相同的错误。

我的环境是Windows 10系统,Python版本为3.10.5。

希望各位能帮忙分析解决这个问题,非常感谢!

备注:内容来源于stack exchange,提问作者eldrly

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 15:07:57