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

从VS Code部署Python函数到Azure Functions失败求助

解决Azure Functions部署时Malformed SCM_RUN_FROM_PACKAGE错误的方法

针对部署Python HTTP触发函数时遇到的Malformed SCM_RUN_FROM_PACKAGE when uploading built content错误,以下是几个可行的解决步骤:

  • 禁用Run From Package模式
    登录Azure门户,进入目标函数应用,打开配置>应用设置,找到WEBSITE_RUN_FROM_PACKAGE配置项并删除,保存设置后重新尝试部署。该模式配置异常会直接导致上传构建内容时触发格式错误。

  • 使用Zip部署替代VS Code自动部署

    1. 本地将函数代码打包为Zip文件(需包含__init__.py、function.json、requirements.txt等必要文件)
    2. 执行Azure CLI命令完成部署:
      az functionapp deployment source config-zip -g <你的资源组名称> -n <你的函数应用名称> --src <本地Zip文件路径>
      
  • 清理SCM缓存

    1. 进入函数应用的高级工具(Kudu),点击Debug Console>CMD
    2. 删除D:\home\site\wwwroot目录下的所有文件,之后重新发起部署
  • 确认运行时版本匹配
    在Azure门户的函数应用配置>常规设置中,检查运行时堆栈是否设置为Python 3.9(与本地使用的3.9.7版本匹配),版本不匹配可能导致构建后的内容无法正常上传

  • 检查存储账户权限
    函数应用关联的存储账户需具备Blob存储读写权限,可在Azure门户的存储账户**访问控制(IAM)**中,确认函数应用的服务主体是否拥有Storage Blob Data Contributor角色权限

你的函数代码为标准HTTP触发实现,无语法或逻辑问题,无需修改:

import logging
import azure.functions as func

def main(req: func.HttpRequest) -> func.HttpResponse:
    logging.info('Python HTTP trigger function processed a request.')

    name = req.params.get('name')
    if not name:
        try:
            req_body = req.get_json()
        except ValueError:
            pass
        else:
            name = req_body.get('name')

    if name:
        return func.HttpResponse(f"Hello, {name}. This HTTP triggered function executed successfully.")
    else:
        return func.HttpResponse(
             "This HTTP triggered function executed successfully. Pass a name in the query string or in the request body for a personalized response.",
             status_code=200
        )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:57:37