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

Python项目如何根据运行环境加载对应环境变量文件?

解决方案:根据运行环境加载对应环境变量文件

问题修正与核心逻辑

当前代码的问题在于:

  1. load_dotenv(os.getenv('local.env'))写法错误,os.getenv('local.env')是读取名为local.env的系统环境变量,而非指定要加载的文件名。
  2. load_dotenv默认会尝试加载根目录的.env文件,即使指定了其他文件,所以必须明确控制加载逻辑,同时删除默认的.env文件。

修改后的代码实现

import os
from dotenv import load_dotenv

# 获取当前运行环境,未指定则默认用local
current_env = os.getenv("ENVIRONMENT", "local")
# 拼接对应环境的配置文件名
env_file_path = f"{current_env}.env"

# 加载指定环境文件,override=True确保覆盖同名变量,且不加载默认.env
load_dotenv(dotenv_path=env_file_path, override=True)

class Client(BaseClient):
    def __init__(self):  # 注意:这里是双下划线的__init__,原代码的单下划线写法无效
        self.endpoint = os.environ.get('INTEGRATION_URL')

不同环境的启动方式

启动项目时,通过设置ENVIRONMENT环境变量来指定运行环境:

  • 本地开发环境:
    export ENVIRONMENT=local
    python client.py
    
  • 测试环境:
    export ENVIRONMENT=staging
    python client.py
    
  • 生产环境:
    export ENVIRONMENT=production
    python client.py
    

如果是在IDE中运行,直接在运行配置里添加环境变量ENVIRONMENT=对应环境名即可。

关键注意点

  1. 务必删除项目根目录下的.env文件,彻底避免默认加载逻辑干扰。
  2. override=True参数确保配置文件中的变量会覆盖系统中已有的同名环境变量,保证环境变量的唯一性。
  3. 类的初始化方法必须是__init__(双下划线),原代码的_init_无法触发初始化逻辑,会导致self.endpoint无法被赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 20:15:30