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

Azure函数Python应用获取嵌套环境变量问题咨询

Azure函数Python应用获取嵌套环境变量问题咨询

你好呀!我来帮你捋清楚这个问题——确实,Python版的Azure Functions和.NET版在处理嵌套配置节这块的逻辑不一样,你遇到的情况是正常的,不是你操作错了,而是Python运行时本身的限制导致的。

先给你明确说:Python的Azure Functions不会自动加载Values节点以外的顶级配置项,也不支持解析嵌套的JSON结构到环境变量里。也就是说你local.settings.json里的IBAN这个顶级节点,根本不会被加载到系统环境变量中,所以不管你用IBAN:API_KEY还是IBAN_API_KEY都拿不到值,因为这些变量在Python运行时的环境里根本不存在。

那该怎么解决呢?给你两个可行的方案:

方案一:把嵌套配置移到Values节点下(推荐)

这是Azure Functions Python版的标准做法,把你的嵌套配置用**双下划线__**作为分隔符,放到Values里,比如:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "",
    "FUNCTIONS_WORKER_RUNTIME": "python",
    "xx": "InstrumentationKey=xx-xx-xx-xx-xx",
    "IBAN__API_KEY": "xx",
    "IBAN__CURRENCY": "USD"
  }
}

然后在代码里用双下划线的键名来获取:

import os

api_key = os.getenv('IBAN__API_KEY', '')

这样就能正常拿到值了,而且这种方式在本地调试和部署到Azure生产环境都能正常工作,是官方推荐的做法。

方案二:直接读取local.settings.json文件(仅本地调试可用)

如果你只是在本地调试时需要读取嵌套结构,可以直接解析local.settings.json文件,但要注意:部署到Azure后,这个文件不会被上传到服务器,所以生产环境不能用这个方法。示例代码如下:

import json
import os

def get_iban_api_key():
    # 确保文件路径正确,本地调试时一般和函数代码在同一目录
    settings_path = os.path.join(os.getcwd(), 'local.settings.json')
    with open(settings_path, 'r') as f:
        settings = json.load(f)
    return settings.get('IBAN', {}).get('API_KEY', '')

# 调用使用
api_key = get_iban_api_key()

总结一下:Python版Azure Functions没有像.NET那样的嵌套配置节直接读取能力,最稳妥的还是用方案一,把所有需要的配置都放到Values节点下,用双下划线来模拟嵌套层级。

备注:内容来源于stack exchange,提问作者Thomas Segato

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 14:54:32