Python 第三方库 | python-dotenv

1. 简介

        在一些项目中,处于安全性的要求,一般不将密码,key等放入到配置文件中。然而这些代码又是上传在 git等平台上。为了方便管理。一般采用系统变量的方式来实现。从而实现配置和代码分开。

2. 安装

pip install python-dotenv

3. 使用


目录结构及代码

.
├── .env
└── demo.py

.env 内容

REDIS_HOST="127.0.0.1"
PWD="/home/wohu"


        你可以使用单词 export 作为每行的前缀,这将会使 python-dotenv 忽略该变量,但是你可以使用 source 命令运行该文件。

python-dotenv 可以用来修改 POSIX 系统的环境变量。

变量的值是按照下面列表中顺序取值:

  • 系统环境变量
  • .env 文件中定义的值
  • 默认值,如果有的话
  • 空字符串

确保引用其他变量时用大括号  { } 包围,就像 ${HOME},因为像 $HOME这样的字符串不会被认为是变量的引用。

demo.py 文件

from dotenv import load_dotenv

load_dotenv()
redis_host = os.environ.get("REDIS_HOST")
pwd = os.environ.get("PWD")
print(redis_host)
print(pwd)

输出结果:

127.0.0.1
/home/wohu/project

最简单和最常见的用法是在应用程序启动时调用 load_dotenv,该方法从当前目录或其父目录中的 .env 文件或指定的路径加载环境变量,然后你可以调用 os.getenv 提供的与环境相关的方法。

load_dotenv 默认不会更新已经存在的配置项。推荐使用 override 参数,如下:

load_dotenv(override=True)

执行结果:

127.0.0.1
/home/wohu

可以看到用 .env 里面的 PWD 内容替换了系统环境变量 PWD

参数说明:

load_dotenv(dotenv_path=find_dotenv(), override=True)
  • dotenv_path: 指定 .env文件路径,当然如果不传该参数的话(默认为 None)也会自动调用dotenv.find_dotenv()去查找文件位置的,但是你的文件名如果不是 .env那就必须传递该参数。
  • override: 当 .env 文件中有变量与系统中原来的环境变量有冲突时,按照上面的取值顺序,默认使用系统变量,如果要用 .env中的变量覆盖系统变量,可以给 load_dotenv() 传递参数override=True。此时只是临时使用了 .env 中的变量值。
  • encoding: load_dotenv() 也可以传递 encoding 参数指定文件的编码方式。

更改 .env 文件名为 .myenv

.
├── .myenv
└── demo.py

默认就会找不到对应的 .myenv文件。需要我们指定路径如下:

load_dotenv(dotenv_path=".myenv", override=True)
# demo.py
from dotenv import load_dotenv, find_dotenv
from pathlib import Path  # Python 3.6+ only

# 一、自动搜索 .env 文件
load_dotenv(verbose=True)


# 二、与上面方式等价
load_dotenv(find_dotenv(), verbose=True)

# 三、或者指定 .env 文件位置
env_path = Path('.') / '.env'
load_dotenv(dotenv_path=env_path, verbose=True)

一般来讲,将配置项单独放到一个文件中,后续可以 Import 这个文件来使用配置项。

原文链接:https://blog.csdn.net/wohu1104/article/details/128281466

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值