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

Azure函数经CLI发布后未在函数列表中显示的问题求助

Azure函数发布后未识别函数的问题排查与解决

本地目录结构

.
|-test
|-TriggerTrainingApp
    -host.json
|---azure_ws
|---test_func
    -__init__.py
    -function.json
    -requirements.json
    -local.settings.json

操作流程

我在TriggerTrainingApp目录下通过CMD执行以下命令创建函数应用:

az functionapp create --consumption-plan-location eastus --runtime python --runtime-version 3.9 --functions-version 4 --name <APP_NAME> --os-type linux --storage-account <STORAGE_ACCOUNT> --resource-group <resource_group>

应用已成功创建并在Azure门户UI中验证通过。随后我进入test_func目录执行发布命令:

func azure functionapp publish TriggerTrainingApp

日志显示命令执行成功,但运行func azure functionapp list-functions TriggerTrainingApp时未列出任何函数,输出仅为:

Functions in TriggerTrainingApp: 

test_func内的文件已出现在函数应用的UI文件列表中,但函数未被识别,请问哪里操作有误?如何将这些文件推送到TriggerTrainingApp下的新函数中?


问题原因

核心问题是发布命令的执行目录错误。Azure Functions要求在函数应用根目录(即包含host.json的TriggerTrainingApp目录)执行发布命令,而非单个函数的子目录test_func。

在test_func目录执行func publish时,工具会直接将该目录下的文件推送到远程应用根目录,导致目录结构不符合Python函数的规范——Python函数要求单个函数必须放在独立子目录中,应用根目录包含host.json,每个函数子目录下有function.json和代码文件。此时远程应用的目录结构被破坏,Azure无法识别出有效函数。

解决步骤

  1. 清理远程错误文件
    通过Azure门户的函数应用「高级工具(Kudu)」,进入site/wwwroot目录,删除根目录下的__init__.py、function.json、requirements.json等文件,仅保留host.json。

  2. 修正本地目录结构
    确保本地结构符合Azure Functions规范:

    TriggerTrainingApp
    |- host.json
    |- test_func
        |- __init__.py
        |- function.json
        |- requirements.txt (注意:Python函数依赖文件需命名为requirements.txt,而非requirements.json)
    |- local.settings.json (本地开发配置文件,无需发布到远程)
    

    同时将local.settings.json移到TriggerTrainingApp根目录下,它是本地开发用的配置文件,不应该放在函数子目录中。

  3. 正确执行发布命令
    切换到TriggerTrainingApp根目录(包含host.json的目录),执行发布命令:

    func azure functionapp publish <APP_NAME> --build remote
    

    替换<APP_NAME>为你的实际函数应用名称,--build remote参数让Azure在云端构建Python环境,避免本地与远程环境不一致的问题。

  4. 验证结果
    执行以下命令确认函数已被识别:

    func azure functionapp list-functions <APP_NAME>
    

    或直接在Azure门户的函数应用页面查看函数列表。

额外注意事项

  • Python函数的依赖文件必须命名为requirements.txt,requirements.json无法被Azure识别,会导致依赖安装失败。
  • local.settings.json仅用于本地开发,发布时不会被上传到远程,无需将其包含在发布目录中。

内容的提问来源于stack exchange,提问作者Judy T Raj

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 12:40:24