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

如何在程序运行中途更新.env变量并使其即时生效?

解决脚本中途更新.env变量并即时生效的方法

dotenv.set_key只会修改磁盘上的.env文件内容,但不会自动同步到当前Python进程的环境变量中,而os.getenv读取的是当前进程的环境变量,而非实时从文件读取。要让新值即时生效,需手动更新进程环境变量,修改后的代码如下:

import os
from dotenv import find_dotenv, load_dotenv, set_key

def changeSecret(slices, envvars, num):
    key = sign(slices) # 解密数据片段并合并成密钥
    dotenv_file = find_dotenv()
    load_dotenv(dotenv_file)
    
    # 修改.env文件中的值
    set_key(dotenv_file, 'secret', str(num))
    # 手动更新当前进程的环境变量,让os.getenv能立即获取新值
    os.environ['secret'] = str(num)
    
    # 此时encrypt函数调用os.getenv('secret')会拿到更新后的数值
    slices = encrypt(key)
    updateenv(slices, envvars) # 更新其他变量

核心说明

  • dotenv.set_key仅负责修改磁盘文件,不影响当前运行进程的环境变量。
  • 通过os.environ['secret'] = str(num)直接修改进程环境变量,后续所有读取该变量的操作都会立即使用新值。
  • 只要encrypt函数内部是通过os.getenv读取变量,而非重新加载.env文件,上述修改就能解决问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 14:50:29