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

无法通过Zip包部署Azure Python函数,请求技术支持

问题:Azure Functions Python Zip部署后函数不显示且无法访问

部署操作与环境信息

  • PowerShell部署命令:
    Publish-AzWebApp -ResourceGroupName <my-rg-name> -Name test-linux-func-app-98962 -ArchivePath myfunc.zip
    
    部署响应返回state: running,无错误提示。
  • AZ CLI部署命令及结果:
    az functionapp deployment source config-zip -g <my-rg-name> -n test-linux-func-app-98962 --src myfunc.zip
    
    响应返回202状态码,显示部署完成,但函数从未在UI的/functions面板中出现,访问HTTP路由仅能看到Azure Functions默认页面。

Zip包内容

myfunc.zip根目录包含以下文件:

  • __init__.py:仅返回"hello world"字符串的主函数
  • function.json:HTTP触发器配置
  • host.json:运行时扩展配置
  • requirements.txt:依赖声明

function.json内容

{
    "scriptFile": "__init__.py",
    "bindings": [
        {
            "type": "httpTrigger",
            "direction": "in",
            "name": "req",
            "methods": [
                "get",
                "post"
            ],
            "route": "hitme",
            "authLevel": "anonymous"
        },
        {
            "type": "http",
            "direction": "out",
            "name": "$return"
        }
    ]
}

host.json内容

{
    "version": "2.0",
    "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[2.6.1, 3.0.0)"
    },
    "extensions": {
        "http": {
            "routePrefix": ""
        }
    }
}

requirements.txt内容

azure-functions==1.13.3

Function App应用设置

ENABLE_ORYX_BUILD = true
SCM_DO_BUILD_DURING_DEPLOYMENT = false
WEBSITE_RUN_FROM_PACKAGE = true
FUNCTIONS_WORKER_RUNTIME = python
FUNCTIONS_EXTENSION_VERSION = ~4

解决方案

核心问题:Zip包目录结构不符合Python Functions部署规范

Linux环境下的Azure Functions要求Python函数必须放在以函数名为命名的独立子目录中,而非直接置于Zip根目录。当前所有文件都在根目录,导致Functions运行时无法识别到函数实体。

修复步骤

  1. 调整Zip包目录结构
    创建一个子目录(比如命名为hitme,与路由名一致或任意合法名称),将__init__.py、function.json、requirements.txt移动到该子目录下,host.json保留在Zip根目录。最终结构如下:

    myfunc.zip
    ├── host.json
    └── hitme/
        ├── __init__.py
        ├── function.json
        └── requirements.txt
    
  2. 修正应用设置冲突
    当前WEBSITE_RUN_FROM_PACKAGE = true与ENABLE_ORYX_BUILD = true存在冲突:

    • 启用WEBSITE_RUN_FROM_PACKAGE时,部署包会被直接挂载运行,不会触发Oryx构建操作
    • 若依赖Oryx自动安装Python包,需修改设置为:
      ENABLE_ORYX_BUILD = true
      SCM_DO_BUILD_DURING_DEPLOYMENT = true
      WEBSITE_RUN_FROM_PACKAGE = false
      FUNCTIONS_WORKER_RUNTIME = python
      FUNCTIONS_EXTENSION_VERSION = ~4
      
    • 若坚持使用WEBSITE_RUN_FROM_PACKAGE,需在本地提前安装依赖并将site-packages目录打包进Zip(不推荐,维护成本高)
  3. 重新部署验证
    使用原PowerShell或AZ CLI命令重新部署调整后的Zip包,等待1-2分钟让运行时加载函数,即可在UI面板看到函数,访问https://<your-function-app-name>.azurewebsites.net/hitme即可返回"hello world"。

额外排查点

  • 查看日志流:在Azure Portal的Function App中进入「监测」->「日志流」,排查是否存在函数加载失败的错误信息
  • 确认Python版本:azure-functions==1.13.3兼容Python 3.8-3.10,需确保Function App配置的Python运行时版本在此范围内

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 15:08:32