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

如何配置Python版Azure Functions支持自定义分组文件夹结构

Azure Functions Python 自定义分组目录配置方案

问题根因

默认配置下,Azure Functions Python 运行时只会扫描host.json所在根目录的一级子文件夹,识别包含function.json的函数目录,不会递归遍历更深层级的子目录。你把函数放到v0、v1这类二级分组文件夹后,运行时扫描不到函数定义,就会抛出No job functions found错误。
注意host.json是项目根的标识文件,必须放在项目最外层根目录,移动到子目录必然触发Unable to find project root错误,这个是运行时的硬规则,不要修改这两个配置文件的位置。

可行配置步骤

以下配置完全适配你想要的按版本分组的目录结构,不需要调整你设计的文件布局:

  • 保持根目录文件位置不动:host.json、local.settings.json、requirements.txt全部留在root目录下,不要移动。
  • 开启嵌套目录扫描开关:打开根目录下的local.settings.json,在Values节点中添加嵌套目录发现配置,开启后运行时会递归扫描所有子目录下的函数:
    {
      "IsEncrypted": false,
      "Values": {
        "AzureWebJobsStorage": "UseDevelopmentStorage=true",
        "FUNCTIONS_WORKER_RUNTIME": "python",
        "AzureFunctionsJobHost__Worker__EnableNestedDirectories": "true"
      }
    }
    
  • (推荐配置)排除非函数目录:打开根目录下的host.json,添加目录排除规则,避免运行时扫描src、tests、虚拟环境等非函数目录,减少启动耗时:
    {
      "version": "2.0",
      "logging": {
        "applicationInsights": {
          "samplingSettings": {
            "isEnabled": true,
            "excludedTypes": "Request"
          }
        }
      },
      "extensionBundle": {
        "id": "Microsoft.Azure.Functions.ExtensionBundle",
        "version": "[3.*, 4.0.0)"
      },
      "functionsWorkerDirectory": {
        "excludePatterns": [
          "src/**",
          "tests/**",
          ".vscode/**",
          ".venv/**",
          "__pycache__/**"
        ]
      }
    }
    
  • 校验单函数配置:逐个检查分组目录下每个函数的function.json,确认scriptFile指向同目录下的入口文件,entryPoint指向正确的入口函数名即可,不需要修改相对路径。以v0/function_1/function.json为例,核心配置如下,你原来的HttpTrigger绑定配置保持不变:
    {
      "scriptFile": "__init__.py",
      "entryPoint": "main",
      "bindings": [
        // 原有HttpTrigger配置无需修改
      ]
    }
    
  • 重启本地Functions运行时,即可正常加载所有分组下的HttpTrigger函数。

部署和调试注意事项

  • 本地调试时,VS Code Azure Functions扩展会自动读取根目录的配置,不需要额外修改launch.json,即可正常断点调试分组目录下的函数。
  • 部署到Azure云时,需要把AzureFunctionsJobHost__Worker__EnableNestedDirectories = true配置同步添加到函数应用的「应用设置」中,否则云端运行时同样会找不到函数。
  • 所有函数的依赖统一放在根目录的requirements.txt中,不要为每个版本分组单独维护依赖文件,运行时只会从项目根目录加载Python依赖。
  • 该配置兼容Python 3.9+环境、Azure Functions VS Code扩展v1.6.0及以上版本,不需要升级现有开发环境。

内容的提问来源于stack exchange,提问作者Julia S.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.15 16:16:00