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

que*_*o42 6 python git environment-variables

我需要从两个不同的文件中获取环境变量,以便将 user+pw 保留在 git 存储库之外。我从另一个位置下载敏感的用户+密码并将其添加到 .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
Run Code Online (Sandbox Code Playgroud)

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

env_file.env 包含:

DB_HOST=xyz
DB_NAME=abc
Run Code Online (Sandbox Code Playgroud)

env_file_in_gitignore.env 需要远离 git 存储库,但可以通过使用 sh 脚本下载:

DB_USER=me
DB_PASS=eao
Run Code Online (Sandbox Code Playgroud)

如何避免错误:

TypeError: connect() argument 2 must be str, not None
connect() argument 2 must be str, not None
Run Code Online (Sandbox Code Playgroud)

由于这两个文件之一未用于 .env 导入,因此会引发哪个?

如何从两个不同的“.env”文件获取环境变量,这两个文件都存储在工作目录中?

小智 8

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

from dotenv import load_dotenv
import os

load_dotenv(<file 1 path>)
load_dotenv(<file 2 path>)
Run Code Online (Sandbox Code Playgroud)