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

本地运行Azure Function(Python) Blob绑定代码触发类型错误的解决求助

解决Azure Functions Blob绑定运行报错:TypeError: FunctionBuilder object is not a module, class, method, or function

问题原因

该错误是由于Azure Functions Python v2模型中装饰器使用不规范,或工具链(Core Tools、Python Worker、azure-functions包)版本不兼容导致的,Python类型检查器无法正确识别装饰后的函数对象。

解决方案

1. 修正装饰器顺序与规范

在Python v2模型中,@app.function_name必须作为第一个装饰器应用到函数上,同时建议明确指定HTTP方法以避免歧义。调整后的代码如下:

import logging
import azure.functions as func

app = func.FunctionApp()

@app.function_name(name="BlobOutput1")
@app.route(route="file", methods=["GET"])
@app.blob_input(arg_name="inputblob",
                path="sample-workitems/test.txt",
                connection="blob__serviceUri")
@app.blob_output(arg_name="outputblob",
                path="newblob/test.txt",
                connection="blob__serviceUri")
def main(req: func.HttpRequest, inputblob: str, outputblob: func.Out[str]):
    logging.info(f'Python HTTP trigger processed blob with {len(inputblob)} bytes')
    outputblob.set(inputblob)
    return "ok"

2. 对齐工具链版本

  • Azure Functions Core Tools:确保版本≥4.0,执行以下命令验证:
    func --version
    
    版本过低则安装最新官方版本
  • azure-functions包:确保版本≥1.11.0,执行检查与升级:
    pip show azure-functions
    pip install --upgrade azure-functions
    

3. 验证连接字符串配置

确保local.settings.json中配置正确的存储连接:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "blob__serviceUri": "你的Blob存储账户服务URI或完整连接字符串"
  }
}

若使用完整连接字符串,可将键名简化为blob,避免URI格式解析问题。

4. 清理重建项目

  • 删除项目下的.venv、__pycache__文件夹
  • 重新创建虚拟环境并安装依赖:
    python -m venv .venv
    # Windows激活:.venv\Scripts\activate
    # Linux/macOS激活:source .venv/bin/activate
    pip install -r requirements.txt
    
  • 重启函数:
    func start
    

内容的提问来源于stack exchange,提问作者Pablo Andrés Cisterna Cárcamo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 00:43:14