Azure函数经CLI发布后未在函数列表中显示的问题求助
本地目录结构
. |-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无法识别出有效函数。
解决步骤
清理远程错误文件
通过Azure门户的函数应用「高级工具(Kudu)」,进入site/wwwroot目录,删除根目录下的__init__.py、function.json、requirements.json等文件,仅保留host.json。修正本地目录结构
确保本地结构符合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根目录下,它是本地开发用的配置文件,不应该放在函数子目录中。正确执行发布命令
切换到TriggerTrainingApp根目录(包含host.json的目录),执行发布命令:func azure functionapp publish <APP_NAME> --build remote替换
<APP_NAME>为你的实际函数应用名称,--build remote参数让Azure在云端构建Python环境,避免本地与远程环境不一致的问题。验证结果
执行以下命令确认函数已被识别:func azure functionapp list-functions <APP_NAME>或直接在Azure门户的函数应用页面查看函数列表。
额外注意事项
- Python函数的依赖文件必须命名为
requirements.txt,requirements.json无法被Azure识别,会导致依赖安装失败。 local.settings.json仅用于本地开发,发布时不会被上传到远程,无需将其包含在发布目录中。
内容的提问来源于stack exchange,提问作者Judy T Raj

