在Python中从多个“.env”文件阅读环境变量

9bfwbjaz  于 2023-05-16  发布在  Python
关注(0)|答案(3)|浏览(178)

我需要从两个不同的文件中获取环境变量,以便将user+pw保持在git repo之外。我从另一个位置下载敏感的user+pass并将其添加到. gitignore。
我在用

from os import getenv
from dotenv import load_dotenv
    
    ...
    load_dotenv()
    DB_HOST=getenv('DB_HOST') # from env file 1
    DB_NAME=getenv('DB_NAME') # from env file 1
    DB_USER=getenv('DB_USER') # from env file 2
    DB_PASS=getenv('DB_PASS') # from env file 2

我在python脚本的文件夹中有两个“.env”文件。
env_file.env包含:

DB_HOST=xyz
DB_NAME=abc

env_file_in_gitignore.env,它需要远离git仓库,但可以使用sh脚本下载:

DB_USER=me
DB_PASS=eao

如何避免错误:

TypeError: connect() argument 2 must be str, not None
connect() argument 2 must be str, not None

由于两个文件中的一个没有用于.env导入,因此抛出了哪个?
如何从两个不同的“.env”文件中获取环境变量,这两个文件都存储在工作目录中?

avwztpqn

avwztpqn1#

可以在load_dotenv函数中添加文件路径作为参数

from dotenv import load_dotenv
import os

load_dotenv(<file 1 path>)
load_dotenv(<file 2 path>)
dxxyhpgq

dxxyhpgq2#

有一个方法加载env文件是load_dotenv你可以使用尽可能多的env文件你想使用

from dotenv import load_dotenv

load_dotenv('path1')
load_dotenv('path2)
...

更多信息请阅读this

nle07wnf

nle07wnf3#

我通过使用如下的if语句实现了从多个env文件中阅读env值。
我把基本的东西在.env文件和本地和prod设置在各自的.env.本地或. env.prod文件

# Import and load environment variables
from dotenv import load_dotenv
load_dotenv() # Load .env file

# Need to check and return boolean, so check for String "True"
APP_ENVIRONMENT = os.getenv("DEBUG") == "True"

if APP_ENVIRONMENT:
    load_dotenv(".env.local")
else:
    load_dotenv(".env.prod")

相关问题