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

如何使用Python设置环境变量并使其对同环境其他脚本生效

问题原因

进程的环境变量是操作系统层面隔离的,你当前运行Python脚本的进程是父进程(通常是Shell终端)创建的子进程:

  • 子进程默认会继承父进程的所有环境变量
  • 子进程对自身环境变量的所有修改,只会作用于自身和它后续启动的孙子进程,完全不会回写到父进程的环境空间
    你用Python的load_dotenv加载.env文件,本质是修改Python进程自身的os.environ字典,所以Python进程内可以正常读取,Python退出后修改就失效了,父Shell、其他独立进程自然拿不到对应的变量。
常见解决方案

方案1:直接用Shell加载.env(最简单通用)

如果没有特殊的解析逻辑,直接在当前Shell会话执行以下命令即可把.env里的变量导出到当前环境:

source common.env

执行后再运行其他脚本、执行echo $CONFIG_FOLDER_NAME都能正常拿到变量。

方案2:Python脚本配合Shell eval实现导出

如果必须用Python做.env的解析处理(比如有加密、动态拼接等自定义逻辑),可以修改Python脚本输出标准的Shell导出语句,再由Shell执行:

  1. 修改Python脚本(示例名:export_env.py):
from dotenv import load_dotenv
import os

# 加载.env
load_dotenv("common.env")

# 仅输出.env内配置的变量(可选过滤,避免导出系统环境变量)
with open("common.env", "r", encoding="utf-8") as f:
    for line in f:
        line = line.strip()
        if not line or line.startswith("#") or "=" not in line:
            continue
        key = line.split("=", 1)[0].strip()
        if key in os.environ:
            # 输出Shell export语句,值加双引号避免特殊字符问题
            print(f'export {key}="{os.environ[key]}"')
  1. 在Shell中执行以下命令加载变量:
eval $(python export_env.py)

方案3:Python项目内多脚本共享.env配置

如果只是同一个项目里的多个Python脚本需要读取.env变量,最常用的方案是每个Python脚本启动时都调用一次load_dotenv("common.env"):

  • load_dotenv默认不会覆盖已经存在的系统环境变量,安全性高
  • 单次加载的性能开销可以忽略,不需要额外做跨进程同步
  • 不受父Shell环境的影响,脚本单独运行也能正常读取配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 08:24:11