文章目录python-dotenv.env 配置管理一行代码搞定1、这玩意儿是干嘛的2、为什么要用它3、几个实用的点4、适合哪些人用python-dotenv.env 配置管理一行代码搞定python-dotenv 在 GitHub 上拿到了 8,778 Star。这个 Python 库只做一件事从 .env 文件读取键值对注入到系统环境变量里。遵循 12-factor 应用原则让本地开发和线上部署的配置管理保持统一。1、这玩意儿是干嘛的就一件事把 .env 文件里的配置项变成环境变量。写完代码要跑起来数据库地址、API 密钥、调试开关这些配置怎么管硬编码不安全每次手动 export 又麻烦。python-dotenv 的做法很直接项目根目录放一个 .env 文件启动时一行load_dotenv()自动加载后面的代码照常从os.environ取值跟从系统环境变量来的一模一样。fromdotenvimportload_dotenv load_dotenv()# .env 里的配置项自动写入 os.environ.env文件的语法跟 Bash 差不多支持注释、变量引用、单双引号包裹的值键值对之间用等号分隔。2、为什么要用它做过项目的都懂配置散落在各个地方是件头疼的事。开发环境用 .env测试环境用另一套CI/CD 里又得单独设置。缺一个统一入口时改个配置项要在几个地方同步漏一处就是一小时的排查。python-dotenv 把配置入口收敛到一个文件。.env放项目根目录加进.gitignore敏感信息不会提交到仓库。本地用.env线上用真正的环境变量代码里对配置的访问方式完全一样。符合 12-factor 第三条配置与代码分离的原则。3、几个实用的点不覆盖已有环境变量。默认overrideFalse系统环境变量优先级高于 .env 文件。容器化部署时这一点很关键K8s 注入的环境变量不会被本地开发配置意外覆盖。支持变量展开。.env 文件里可以写${DOMAIN}引用其他变量自动解析嵌套引用。写法跟 Bash 一致没有额外的学习成本。不碰环境也能取配置。dotenv_values()只返回一个 dict不去改os.environ。适合多份配置按优先级合并的场景fromdotenvimportdotenv_values config{**dotenv_values(.env.shared),**dotenv_values(.env.secret),**os.environ,}自带命令行工具。装上python-dotenv[cli]终端里直接dotenv set、dotenv list、dotenv run操作 .env 文件不需要手动打开编辑器。4、适合哪些人用写 Python 项目、需要管理本地开发环境变量的开发者遵循 12-factor 原则、希望配置与代码分离的团队在多环境之间切换、需要统一配置管理方案的人遵循 12-factor 原则、希望配置与代码分离的团队在多环境之间切换、需要统一配置管理方案的人
python-dotenv:.env 配置管理,一行代码搞定
文章目录python-dotenv.env 配置管理一行代码搞定1、这玩意儿是干嘛的2、为什么要用它3、几个实用的点4、适合哪些人用python-dotenv.env 配置管理一行代码搞定python-dotenv 在 GitHub 上拿到了 8,778 Star。这个 Python 库只做一件事从 .env 文件读取键值对注入到系统环境变量里。遵循 12-factor 应用原则让本地开发和线上部署的配置管理保持统一。1、这玩意儿是干嘛的就一件事把 .env 文件里的配置项变成环境变量。写完代码要跑起来数据库地址、API 密钥、调试开关这些配置怎么管硬编码不安全每次手动 export 又麻烦。python-dotenv 的做法很直接项目根目录放一个 .env 文件启动时一行load_dotenv()自动加载后面的代码照常从os.environ取值跟从系统环境变量来的一模一样。fromdotenvimportload_dotenv load_dotenv()# .env 里的配置项自动写入 os.environ.env文件的语法跟 Bash 差不多支持注释、变量引用、单双引号包裹的值键值对之间用等号分隔。2、为什么要用它做过项目的都懂配置散落在各个地方是件头疼的事。开发环境用 .env测试环境用另一套CI/CD 里又得单独设置。缺一个统一入口时改个配置项要在几个地方同步漏一处就是一小时的排查。python-dotenv 把配置入口收敛到一个文件。.env放项目根目录加进.gitignore敏感信息不会提交到仓库。本地用.env线上用真正的环境变量代码里对配置的访问方式完全一样。符合 12-factor 第三条配置与代码分离的原则。3、几个实用的点不覆盖已有环境变量。默认overrideFalse系统环境变量优先级高于 .env 文件。容器化部署时这一点很关键K8s 注入的环境变量不会被本地开发配置意外覆盖。支持变量展开。.env 文件里可以写${DOMAIN}引用其他变量自动解析嵌套引用。写法跟 Bash 一致没有额外的学习成本。不碰环境也能取配置。dotenv_values()只返回一个 dict不去改os.environ。适合多份配置按优先级合并的场景fromdotenvimportdotenv_values config{**dotenv_values(.env.shared),**dotenv_values(.env.secret),**os.environ,}自带命令行工具。装上python-dotenv[cli]终端里直接dotenv set、dotenv list、dotenv run操作 .env 文件不需要手动打开编辑器。4、适合哪些人用写 Python 项目、需要管理本地开发环境变量的开发者遵循 12-factor 原则、希望配置与代码分离的团队在多环境之间切换、需要统一配置管理方案的人遵循 12-factor 原则、希望配置与代码分离的团队在多环境之间切换、需要统一配置管理方案的人