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

Azure Function App部署Python函数遇ModuleNotFoundError求助

解决方案:Azure Function Python 模块导入与依赖冲突问题

问题根源

azure-storage是Azure存储SDK的旧版元包(已废弃),与新版拆分后的azure-storage-blob存在依赖冲突,导致云端部署时模块命名空间混乱,引发导入错误;后续的AppendBlob问题则是因为使用了旧版SDK的API。

具体修复步骤

1. 清理依赖文件(requirements.txt)

删除requirements.txt中的azure-storage条目,保留以下依赖即可:

azure-core>=1.26.0
azure-functions>=1.17.0
azure-storage-blob>=12.14.0

注:azure-storage-blob已自动依赖azure-core,可省略azure-core条目,保留也不影响

2. 修正代码中的导入语句

替换旧版的import azure.storage为新版SDK的正确路径:

  • 如果是操作Append Blob,使用以下导入:
    from azure.storage.blob import BlobServiceClient, AppendBlobClient
    
  • 移除所有基于azure.storage的旧导入,避免命名空间冲突。

3. 确保云端依赖正确安装

  • 本地先执行pip install -r requirements.txt,验证本地运行正常。
  • 部署到Azure Function时,确认Function App的常规设置中,"构建方式"设为远程构建(Linux环境默认开启),确保Azure重新安装依赖,避免本地与云端依赖版本不一致。
  • 若远程构建失败,可手动打包依赖后部署:
    pip install -r requirements.txt --target .python_packages/lib/site-packages
    
    将.python_packages文件夹与函数代码一同上传。

4. 修复AppendBlob相关问题

旧版AppendBlobService已被废弃,改用新版API创建和操作Append Blob,示例代码:

from azure.storage.blob import BlobServiceClient
import os

def main(req):
    conn_str = os.environ.get("AzureWebJobsStorage")
    blob_service_client = BlobServiceClient.from_connection_string(conn_str)
    
    # 获取容器客户端
    container_client = blob_service_client.get_container_client("your-container-name")
    # 获取Append Blob客户端
    append_blob_client = container_client.get_blob_client("your-append-blob-name")
    
    # 若Blob不存在则创建
    if not append_blob_client.exists():
        append_blob_client.create_append_blob()
    
    # 追加数据
    append_blob_client.append_block(b"Sample append data")
    return "Append operation completed"

验证步骤

  1. 本地运行函数,确认无导入错误和功能正常。
  2. 重新部署到Azure Function App。
  3. 在订阅环境测试函数,检查是否仍有异常。

内容的提问来源于stack exchange,提问作者Kiran Qureshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:32:33