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

如何在Python中将Heroku config vars作为对象使用

Heroku Flask 读取配置变量的正确方法

Heroku 设置的所有配置变量(Config Vars)会在应用部署时自动注入到进程的环境变量中,你在Python代码里通过标准库就能读取,注意区分变量存储格式做对应处理即可:

1. 单字符串密钥直接读取

如果你存的X_App_APIKeys是单条字符串类型的密钥,直接用os模块读取环境变量即可:

import os

# 直接读取环境变量值
myapikeys = os.getenv("X_App_APIKeys")

读取后得到的就是你在Heroku后台填写的字符串内容,可以直接用于接口签名校验。

2. 字典/多密钥集合的解析读取

如果你在Heroku后台填的是类似{"service1_key":"xxx", "service2_key":"yyy"}的多密钥集合,要注意:环境变量读取出来默认是字符串类型,不能直接当字典对象调用,需要用标准json模块解析,绝对不要用eval()做转换,避免恶意代码注入风险。
示例代码:

import os
import json

# 先读字符串值,再解析为字典对象
api_keys_str = os.getenv("X_App_APIKeys")
myapikeys = json.loads(api_keys_str)

# 解析完成后就可以按字典方式调用,比如 myapikeys["service1_key"]

注意:

  • 配置变量名大小写敏感,读取时的字符串要和你在Heroku后台填写的变量名完全一致,避免读不到值
  • 存JSON格式的密钥集合时,必须严格遵循标准JSON语法,所有字符串用双引号包裹,不要用单引号,否则会解析失败

3. Flask项目适配写法

如果是多文件拆分的Flask项目,可以把密钥加载到Flask的全局配置对象中,方便各路由模块调用:

from flask import Flask
import os
import json

app = Flask(__name__)
# 加载到app配置
app.config["X_App_APIKeys"] = json.loads(os.getenv("X_App_APIKeys"))

后续在视图函数中调用时,只需要导入current_app即可读取:

from flask import current_app

@router.route("/test")
def test_view():
    myapikeys = current_app.config["X_App_APIKeys"]
    # 后续业务逻辑

本地调试提示

本地开发时没有Heroku的环境变量注入,可以在项目根目录创建.env文件写入对应配置,配合python-dotenv库自动加载环境变量,注意要把.env加入.gitignore,不要把包含密钥的文件提交到代码仓库。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 16:39:33