Python环境变量自动配置:实现生产与开发环境无缝切换

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"获取环境变量并自动判断当前环境,自动获取匹配对应配置文件。

相关推荐
CHANG_THE_WORLD3 分钟前
<Fluent Python > Unicode 文本与字节
开发语言·python
测试员周周5 分钟前
【AI测试系统】第1篇:LangGraph 实战:用 State Graph 搭建 AI测试流水线(4 步编排 + RAG 增强 + 完整代码)
linux·windows·python·功能测试·microsoft·单元测试·多轮对话
AI人工智能+电脑小能手8 分钟前
【大白话说Java面试题】【Java基础篇】第20题:HashMap在计算index的时候,为什么要对数组长度做减1操作
java·开发语言·数据结构·后端·面试·哈希算法·hash-index
噜噜噜阿鲁~9 分钟前
python学习笔记 | 8.2、函数式编程-返回函数
笔记·python·学习
中二痞24 分钟前
下载Python 版本,环境变量变更以及PyCharm更换python版本
开发语言·python·pycharm
SilentSamsara27 分钟前
标准库精讲:collections/itertools/functools/pathlib 实战
开发语言·vscode·python·青少年编程·pycharm
小郑加油28 分钟前
python学习Day8-9天:函数(def)的基础运用
python·学习
2401_8242226928 分钟前
如何卸载并重装Oracle Grid_Deinstall脚本与ASM磁盘清理
jvm·数据库·python
qq_4142565731 分钟前
生产库如何利用Navicat实现配置特定触发器事件调度_提高管理效率
jvm·数据库·python
2301_7756398937 分钟前
mysql如何查看服务器支持的存储引擎_使用SHOW ENGINES命令
jvm·数据库·python