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

Linux环境下Python如何读取运行时新增的环境变量?

动态获取最新环境变量的实现方法

Python的os.environ只会在进程启动时加载一次父进程的环境变量,之后系统或shell中修改的环境变量不会自动同步到Python进程。以下是两种可行的解决方法:

方法一:通过调用Shell命令获取最新环境变量

每次需要获取环境变量时,启动一个新的Shell进程并输出当前环境变量,再解析成字典。这种方法能拿到当前Shell会话中临时export的变量,或者加载配置文件后的环境变量。

示例代码:

import subprocess

def get_latest_env():
    # 启动bash并执行env命令输出所有环境变量,可按需加载.bashrc
    result = subprocess.run(
        ['bash', '-c', 'source ~/.bashrc && env'],
        capture_output=True,
        text=True,
        check=True
    )
    env_dict = {}
    # 解析输出为键值对
    for line in result.stdout.splitlines():
        if '=' in line:
            key, value = line.split('=', 1)
            env_dict[key] = value
    return env_dict

# 使用示例
latest_env = get_latest_env()
print(latest_env.get('YOUR_CUSTOM_VAR'))
  • 若不需要加载.bashrc,可以把命令改成bash -c 'env',直接获取当前Shell继承的环境变量。
  • 该方法依赖于启动Python进程的Shell环境,如果Python在后台运行(如systemd服务),可能需要调整命令以加载对应的配置文件。

方法二:通过配置文件动态读取(推荐长期运行程序)

把需要动态修改的环境变量放到单独的配置文件(如.env),Python定时读取并更新自身环境变量。这种方式不依赖Shell环境,更稳定可控。

步骤1:创建.env配置文件

# .env文件内容
APP_DEBUG=True
DB_HOST=127.0.0.1
CUSTOM_VAR=latest_value

步骤2:Python读取配置文件的代码

import os
import time

def load_env_from_file(file_path='.env'):
    env_dict = {}
    try:
        with open(file_path, 'r') as f:
            for line in f:
                line = line.strip()
                # 跳过注释和空行
                if not line or line.startswith('#'):
                    continue
                if '=' in line:
                    key, value = line.split('=', 1)
                    env_dict[key.strip()] = value.strip()
        # 更新os.environ,也可以直接返回字典使用
        os.environ.update(env_dict)
        return env_dict
    except FileNotFoundError:
        print(f"配置文件{file_path}不存在")
        return {}

# 定时读取配置(示例:每5分钟更新一次)
while True:
    load_env_from_file()
    print("当前CUSTOM_VAR值:", os.environ.get('CUSTOM_VAR'))
    time.sleep(300)

补充说明

  • 系统级环境变量(如/etc/environment)可以直接读取文件解析,但注意文件格式差异,部分变量可能带引号或有特殊写法,需要额外处理。
  • 避免频繁调用Shell命令,会产生进程开销,长期运行的程序优先选择配置文件方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:35:17