当前位置:   article > 正文

Python 三方库 python-dotenv_python dotenv

python dotenv

1. 简介

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

2. 安装

pip install python-dotenv
  • 1

3. 使用

目录结构及代码

.
├── .env
└── demo.py
  • 1
  • 2
  • 3

.env 内容

REDIS_HOST="127.0.0.1"
PWD="/home/wohu"
  • 1
  • 2

你可以使用单词 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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

输出结果:

127.0.0.1
/home/wohu/project
  • 1
  • 2

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

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

load_dotenv(override=True)
  • 1

执行结果:

127.0.0.1
/home/wohu
  • 1
  • 2

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

参数说明:

load_dotenv(dotenv_path=find_dotenv(), override=True)
  • 1
  • 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
  • 1
  • 2
  • 3

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

load_dotenv(dotenv_path=".myenv", override=True)
  • 1
# 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)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号