
python库-dotenv包 及 .env配置文件详解

目录
- python库-dotenv包 | .env配置文件
- 背景
- python-dotenv 如何使用
python库-dotenv包 | .env配置文件
背景
我们开发的每个系统都离不开配置信息,这些信息都非常敏感,一旦泄露出去后果非常严重,被泄露的原因一般是程序员将配置信息和代码混在一起导致的。
一般业务代码中,通过环境变量来加载敏感信息。
将敏感信息设置成环境变量,但是这样的信息非常多,挨个设置也太麻烦了。你一定希望可以将这些敏感信息单独放在一个文件中,始终与代码分开管理。
在python项目中,敏感信息(如数据库密码)比较推荐使用 .env
文件来单独管理,且不纳入git管理中。而目前比较流行的解析.env则是python-dotenv。
python-dotenv 能将配置文件的配置信息自动加入到环境变量。 python-dotenv解决了代码与敏感信息的分离
flask官方推荐使用python-dotenv包来管理特殊的配置。
python-dotenv 如何使用
使用思路:最简单和最常见的用法是在应用程序启动时调用load_dotenv
,从当前目录或其父目录中的.env
文件或指定的路径加载环境变量,然后你可以调用os.getenv
提供的与环境相关的方法。
load_dotenv默认不会更新已经存在的配置项。推荐使用override参数,如下:
from dotenv import load_dotenv, find_dotenv load_dotenv(find_dotenv(), override=True)
- dotenv_path: 指定.env文件路径,当然如果不传该参数的话(默认为None)也会自定调用dotenv.find_dotenv()去查找文件位置的,但是你的文件名如果不是.env那就必须传递该参数
- override: 当.env 文件中有变量与系统中原来的环境变量有冲突时,按照上面的取值顺序,默认使用系统变量,如果要用.env中的变量覆盖系统变量,可以给load_dotenv() 传递参数override=True。此时只是临时使用了.env 中的变量值
import os from dotenv import find_dotenv, load_dotenv # 加载.env文件到环境变量 load_dotenv(find_dotenv('.env')) print(os.environ.get("URL"))
加载文件后,就可以通过os.environ从环境变量中读取内容。
到此这篇关于python库-dotenv包 | .env配置文件的文章就介绍到这了,更多相关python env配置文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!
相关推荐
-
Python基于os.environ从windows获取环境变量
安装python之后,我们往往面临这样一个问题,在命令行输入"python",竟然出错,难道是没有安装成功吗?非也,其实是你的系统环境变量没有设置好.今天,小编就来带大家学学python怎么设置环境变量 问题场景: 写脚本涉及到数据库的配置信息,然后上面要求这种关键信息不能体现到脚本中,哦,那怎么办,那我去哪里读取数据库信息呢? 解决方法: 从运行脚本的机器的环境变量里读取数据库信息,这样脚本中全是代码,就没有明文配置信息了. 具体步骤: 1.先在自己的windows机器上配置好环境变
-
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
最近在重构 flask 项目的时候发现项目的环境变量异常的混乱,非常不便于管理.而且,更重要的事情是我需要通过自定义命令来运行 devlopment 和 production 两种项目环境. 自定义命令工具--flask-cli 在Flask 1.0+ 中已经支持了flask-cli,在翻阅了flask-cli文档之后,发现文档中提供的自定义命令的方法约束还是有点多,而且介绍的也不是特别详细.后来,通过查看flask-cli的源码发现flask-cli是基于Click开发的. Click is
-
如何使用python-dotenv解决代码与敏感信息的分离
目录 python-dotenv flask配置最佳实践 总结 “12-Factor” 是构建SaaS服务的一种方法论,这套理论适用于任意语言和后端服务(数据库.消息队列.缓存等)开发的应用程序. 其中有一条很重要的原则是关于配置的, 12-Factor 要求代码和配置严格分离. 为什么要这么做? 如果你的代码放在Github等外部网络,哪一天要是代码不小心泄露了,你的各种密码,密钥,等配置全都暴露于公网中,这是一件非常可怕的事. 判断一个应用是否正确的将配置与代码分离开了,一个简单方法是你的代
-
python库-dotenv包 及 .env配置文件详解
目录 python库-dotenv包 | .env配置文件 背景 python-dotenv 如何使用 python库-dotenv包 | .env配置文件 背景 我们开发的每个系统都离不开配置信息,这些信息都非常敏感,一旦泄露出去后果非常严重,被泄露的原因一般是程序员将配置信息和代码混在一起导致的. 一般业务代码中,通过环境变量来加载敏感信息. 将敏感信息设置成环境变量,但是这样的信息非常多,挨个设置也太麻烦了.你一定希望可以将这些敏感信息单独放在一个文件中,始终与代码分开管理. 在pytho
-
python中seaborn包常用图形使用详解
seaborn包是对matplotlib的增强版,需要安装matplotlib后才能使用. 所有图形都用plt.show()来显示出来,也可以使用下面的创建画布 fig,ax=plt.subplots() #一个画布 fig,(ax1,ax2) = plt.subplots( ncols=2) #两个画布 1)单个特征统计图countplot sn.countplot(train.mnth)#离散型特征可使用,描述样本点出现的次数. 2)单个特征统计图distplot sn.distplot(t
-
python库JsonSchema验证JSON数据结构使用详解
目录 简单实例 type关键字 object关键字 属性 properties 必需属性 大小 数组属性 items List validation Tuple validation 长度 唯一性 通用关键字 元数据 枚举值 组合模式 anyOf oneOf allOf $schema关键字 正则表达式 构建复杂的模式 重用 JSON Schema是一个用于验证JSON数据结构的强大工具, 我查看并学习了JSON Schema的官方文档, 做了详细的记录, 分享一下. 我们可以使用JSON Sc
-
Python科学计算包numpy用法实例详解
本文实例讲述了Python科学计算包numpy用法.分享给大家供大家参考,具体如下: 1 数据结构 numpy使用一种称为ndarray的类似Matlab的矩阵式数据结构管理数据,比python的列表和标准库的array类更为强大,处理数据更为方便. 1.1 数组的生成 在numpy中,生成数组需要指定数据类型,默认是int32,即整数,可以通过dtype参数来指定,一般用到的有int32.bool.float32.uint32.complex,分别代表整数.布尔值.浮点型.无符号整数和复数 一
-
Python中扩展包的安装方法详解
前言 作为一个pythoner ,包的安装时必须懂的,这个语言跟matlab很类似,开源.共享,只要你有好的方法,都可以作为一个库,供大家下载使用,毕竟俗话说:"人生苦短,请用Python吗",下面话不多说,我们来一起看看详细的介绍吧. 方法如下: 1.单文件模块 将包拷贝到python安装目录下Lib下,eg:D:\py\Lib. 2.多文件模块 找到模块包(压缩文件zip或tar.gz)下载,进行解压,然后控制台中执行:python setup.py install xxx即可 3
-
Laravel如何友好的修改.env配置文件详解
前言 难道每次改 .env 都得通过修改代码来改吗?.env 文件能不能通过在后台配置呢? 其实是很简单就可以实现的,把以下函数加入到你的项目中 示例代码 function modifyEnv(array $data) { $envPath = base_path() . DIRECTORY_SEPARATOR . '.env'; $contentArray = collect(file($envPath, FILE_IGNORE_NEW_LINES)); $contentArray->tran
-
Python自动安装第三方库的小技巧(pip使用详解)
大家好,我是才哥. 最近周末也加班了,害- 有刚接触python的粉丝同学在运行此前<>的完整代码遇到以下问题,然后- 好吧,今天我们就专门介绍一下Python安装第三方库的一些小技巧,其中还包含自动安装的方法哈. 1. pip在线安装 在cmd命令行模式下,通过pip install 第三方库名称的形式,直接进行第三方库的安装. 我们以安装plotly为例,安装表现如下: pip install plotly 如果需要安装的第三方库已经存在,我们执行安装命令的时候会提示其存在且展示库安装的位
-
python标准库压缩包模块zipfile和tarfile详解(常用标准库)
目录 常用的标准库 zip格式 ZipFile参数说明 操作含义 压缩方法 常用方法 tar包 和 gz.bz2.xz格式 删除压缩包中的文件 常用的标准库 在我们常用的系统windows和Linux系统中有很多支持的压缩包格式,包括但不限于以下种类:rar.zip.tar,以下的标准库的作用就是用于压缩解压缩其中一些格式的压缩包. zip格式 import zipfile zipfile模块操作压缩包使用ZipFile类进行操作,使用方法和open的使用方法很相似,也是使用r.w.x.a四种操
-
python中requests库session对象的妙用详解
在进行接口测试的时候,我们会调用多个接口发出多个请求,在这些请求中有时候需要保持一些共用的数据,例如cookies信息. 妙用1 requests库的session对象能够帮我们跨请求保持某些参数,也会在同一个session实例发出的所有请求之间保持cookies. 举个栗子,跨请求保持cookies,在命令行上输入下面命令: # 创建一个session对象 s = requests.Session() # 用session对象发出get请求,设置cookies s.get('http://ht
-
Python图像处理库PIL的ImageGrab模块介绍详解
ImageGrab模块用于将当前屏幕的内容或者剪贴板上的内容拷贝到PIL图像内存. 当前版本只支持windows系统. 一.ImageGrab模块的函数 1. Grab 定义:ImageGrab.grab()⇒ image ImageGrab.grab(bbox) ⇒ image 含义:(New in 1.1.3)抓取当前屏幕的快照,返回一个模式为"RGB"的图像.参数边界框用于限制只拷贝当前屏幕的一部分区域. 例子: >>> from PIL importImag
随机推荐
- JavaScript中数组添加值和访问值常见问题
- Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
- jQuery实现div跟随鼠标移动
- 让URL只允许一些字符的正则表达式
- spring boot中的静态资源加载处理方式
- AlertBox 弹出层信息提示框效果实现步骤
- Javascript 调试利器 Firebug使用详解六
- 整理关于Bootstrap列表组的慕课笔记
- ASP.NET jQuery 实例2 (表单中使用回车在TextBox之间向下移动)
- PHP读取XML值的代码(推荐)
- 堆排序算法(选择排序改进)
- jQuery中hover方法搭配css的hover选择器,实现选中元素突出显示方法
- 网页中实现浏览器的最大,最小化和关闭按钮
- javascript不同页面传值的改进版
- 手工帮用户多开一个FTP
- Windows服务器安装PHP MongoDB扩展的方法
- Android回调与观察者模式的实现原理
- java遍历Map的几种方法分析
- Python中实现三目运算的方法
- c#正反序列化XML文件示例(xml序列化)
其他
- vue使用echarts动态横向柱状图
- netcore 数据验证
- C# 无窗体背景图圆角
- sqlserver查询触发器是否死锁
- gitee安装与配置
- js用函数判断是否为水仙花数
- 组合式api 子组件 value
- 普通springboot 设置提前读取配置
- 如何把win 10文本文档改为sh文件
- pandas列数不同的dataframe取并集
- win10 cv2.imwrite不报错
- svn 断点续传 python
- C#获取list json的第一个元素
- 使用状态机的python项目
- python获取tensor第一列
- vue 使用px2rem频繁掉接口
- pyqt QVBoxLayout 内容太多
- matplotlib 像素 word
- mabtisplus 如何拼括号
- ngnix 内部访问