python-dotenv 是一个 Python 库,用于加载和解析 .env 文件中的环境变量。.env 文件通常用于存储应用程序的配置信息,如数据库连接信息、API密钥等敏感数据,而不将这些信息硬编码到代码中。
通过使用 python-dotenv,可以轻松地将 .env 文件中定义的环境变量加载到 Python 程序中,使得程序的配置更加灵活和安全。这个库提供了一种简单的方法来管理环境变量,避免了在代码中直接暴露敏感信息。
安装:pip install -U python-dotenv
查看:pip show python-dotenv
Name: python-dotenv
Version: 1.0.1
Summary: Read key-value pairs from a .env file and set them as environment variables
Home-page: https://github.com/theskumar/python-dotenv
Author: Saurabh Kumar
Author-email: me+github@saurabh-kumar.com
License: BSD-3-Clause
Location: /Users/rickie/opt/anaconda3/envs/llm-universe/lib/python3.10/site-packages
Requires:
Required-by: qianfan
示例代码:
from dotenv import load_dotenv, find_dotenv
# 读取本地/项目的环境变量。
# find_dotenv() 寻找并定位 .env 文件的路径
# load_dotenv() 读取该 .env 文件,并将其中的环境变量加载到当前的运行环境中
# 如果你设置的是全局的环境变量,这行代码则没有任何作用。
_ = load_dotenv(find_dotenv())
import os
print(os.environ.get("ZHIPUAI_API_KEY"))
两个函数:load_dotenv 和 find_dotenv,用于加载环境变量从 .env 文件中。.env 文件是一个常用于存储项目配置信息(如数据库连接信息、API 密钥等)的文件,但它不应被包含在版本控制系统中(如 Git)。
find_dotenv() 函数会搜索当前目录及其父目录来寻找名为 .env 的文件,并返回找到的文件的路径。如果没有找到 .env 文件,它会返回 None。
load_dotenv() 函数则用于从指定的 .env 文件中加载环境变量。如果传递了参数(如 find_dotenv() 返回的路径),则只从该文件中加载。如果没有传递参数,则默认从名为 .env 的当前工作目录中的文件中加载。
find_dotenv() 被调用以查找 .env 文件的路径。
load_dotenv() 被调用以加载找到的环境变量。
_ 是一个常用的 Python 约定,用于表示我们不关心该函数的返回值。在这里,load_dotenv 函数的返回值(一个字典,其中包含从 .env 文件中加载的所有环境变量)被赋给了 _,意味着我们不打算在后续的代码中使用它。
如果你设置的是全局的环境变量,这行代码则没有任何作用。
这是因为 load_dotenv 主要用于加载项目特定的环境变量,这些变量在项目的运行环境中是局部的。如果你已经在全局环境中设置了这些变量(例如,通过操作系统的环境设置),那么你的程序应该已经能够访问它们,无需通过 .env 文件再次加载。
在 Python 中,当使用 os.environ.get() 获取环境变量时,优先级通常是当前运行环境中的环境变量高于项目中的 .env 文件中的环境变量。
简而言之,这段代码的目的是在项目的工作环境中加载 .env 文件中定义的环境变量,但如果这些变量已经作为全局环境变量设置,则这行代码没有效果。
.env 文件示例:
# OPENAI API 访问密钥配置
OPENAI_API_KEY = "111"
# 星火 API 访问密钥配置
# 控制台中获取的 APPID 信息
SPARK_APPID = ""
# 控制台中获取的 APISecret 信息
SPARK_API_SECRET = ""
# 控制台中获取的 APIKey 信息
SPARK_API_KEY = ""
# 智谱 API 访问密钥配置
ZHIPUAI_API_KEY = "000"