本地运行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
相关产品推荐
相关产品推荐

