Python环境变量自动配置:实现生产与开发环境无缝切换
导言
日常开发中经常会区分生产环境 和开发环境 和测试环境,每一个环境中都有固定的配置,例如 api地址,数据库连接配置,redis连接配置等。
当我们在开发的时候需要来回切换这些配置,而且容易出错。
这里我将介绍如何使用Python环境变量自动配置生产与开发环境,实现环境间的无缝切换。
实现目标
本地开发完成后,将代码全部移植到线上环境可以直接运行,不用更改其他配置。
准备:根据环境变量自动匹配开发环境
这里我只是针对简单的生产 和开发 环境,对于多种环境复杂环境,需要用户自行做一些其他的方案选型,例如 python-dotenv等
环境变量配置
需要用户提前在生产端 和电脑端分别配置环境变量,这里我用window系统展示
-
生产环境配置true
-
开发环境配置false
实现:
python
import os
# 环境配置
IS_PRO = False # 默认值
DEV_BASE_URL = "http://192.168.78.24:18888/api"
PRO_BASE_URL = "http://128.128.55.123:1234/api"
DEV_REDIS_URL = "redis://192.168.78.11"
PRO_REDIS_URL = "redis://128.128.55.123"
def detect_environment():
"""检测当前运行环境"""
global IS_PRO
try:
# 通过环境变量判断是否为生产环境
IS_PRO = os.environ.get("CCRC_TOOL_AUTOMATION", "").lower() == "true"
except Exception as e:
print(f"环境检测失败: {e}")
IS_PRO = False
def get_config():
"""获取当前环境配置"""
detect_environment()
return {
"IS_PRO": IS_PRO,
"BASE_URL": PRO_BASE_URL if IS_PRO else DEV_BASE_URL,
"REDIS_URL": PRO_REDIS_URL if IS_PRO else DEV_REDIS_URL,
}
# 使用示例
if __name__ == "__main__":
config = get_config()
print("\n当前环境配置:")
print(f"是否为生产环境: {config['IS_PRO']}")
print(f"API地址: {config['BASE_URL']}")
print(f"Redis地址: {config['REDIS_URL']}")
结尾
通过核心代码片段IS_PRO = os.environ.get("CCRC_TOOL_AUTOMATION", "").lower() == "true"获取环境变量并自动判断当前环境,自动获取匹配对应配置文件。

