一、什么是python-dotenv?
Python-dotenv是一个Python库,它可以从.env文件中读取环境变量,将它们存储在操作系统的环境变量中,使Python应用程序可以轻松地访问这些变量。.env文件是一个纯文本文件,其中包含key=value对,每个key=value对占据一行。将敏感信息存储在环境变量中而不是硬编码在代码中是一个好的安全实践,因为这些值不会存储在代码库中,也不会在部署时暴露出来。
from dotenv import load_dotenv
import os
# 将.env文件中的环境变量加载到系统中
load_dotenv()
# 访问环境变量
SECRET_KEY = os.getenv("SECRET_KEY")
DATABASE_PASSWORD = os.getenv("DATABASE_PASSWORD")
二、为什么使用Python-dotenv?
1、保护敏感信息
使用Python-dotenv将敏感信息存储在环境变量中,而不是硬编码在代码中,可以更加安全地保护这些信息。在Git等版本控制系统中,.gitignore文件可以忽略.env文件,以避免将敏感信息推送到仓库中。这样可以保证代码的安全,并减少泄露的风险。
2、方便易用
Python-dotenv提供了一种简单的方式来管理环境变量,并且可以在不同的部署阶段中使用不同的变量,而无需修改代码本身。此外,Python-dotenv还可以与其他工具集成使用,比如docker-compose,这样可以轻松实现本地开发和生产环境之间的切换。
3、支持多种变量格式
Python-dotenv支持多种变量格式,这些格式包括:key=value,key="value",key='value'以及key=value # comment。这些灵活的格式使得Python-dotenv非常容易集成到不同的项目中。
三、如何使用Python-dotenv?
1、安装Python-dotenv
你可以使用pip来安装Python-dotenv,如下所示:
pip install python-dotenv
2、创建.env文件
创建一个.env文件,并将环境变量写入该文件中,每个key=value对应一行:
# MySQL数据库
DATABASE_HOST=localhost
DATABASE_NAME=mydatabase
DATABASE_USER=myuser
DATABASE_PASSWORD=mypassword
# 私有key
SECRET_KEY=mysecretkey
3、将.env文件中的变量加载到系统环境变量中
通过使用load_dotenv函数,将.env文件中的所有变量读取到系统环境变量中,可以在程序中方便地使用这些变量。
from dotenv import load_dotenv
import os
# 将.env文件中的环境变量加载到系统中
load_dotenv()
# 访问环境变量
SECRET_KEY = os.getenv("SECRET_KEY")
DATABASE_PASSWORD = os.getenv("DATABASE_PASSWORD")
4、使用Python-dotenv进行配置
除了使用环境变量,Python-dotenv还可以与其他库集成使用,比如Flask。在Flask应用程序中,使用Python-dotenv来管理应用程序配置非常简单,可以在应用程序根目录中创建一个.env文件,然后在应用程序初始化时使用load_dotenv函数将变量加载到系统中。
from flask import Flask
from dotenv import load_dotenv
# 创建应用程序
app = Flask(__name__)
# 将.env文件中的环境变量加载到系统中
load_dotenv()
# 设置秘密密钥
app.config["SECRET_KEY"] = os.getenv("SECRET_KEY")
# 设置数据库链接配置
app.config["SQLALCHEMY_DATABASE_URI"] = (
f"mysql+pymysql://{os.getenv('DATABASE_USER')}:{os.getenv('DATABASE_PASSWORD')}@{os.getenv('DATABASE_HOST')}/{os.getenv('DATABASE_NAME')}"
)
# 创建数据库实例
db = SQLAlchemy(app)
# 启动应用程序
if __name__ == '__main__':
app.run()
四、总结
Python-dotenv提供了一种简单的方式来管理环境变量,使得Python应用程序可以轻松地访问这些变量。通过使用Python-dotenv,可以更加安全地保护敏感信息,并且方便易用,支持多种变量格式。在不同的部署阶段中使用不同的变量,而无需修改代码本身,是一个很好的实践。总体来说,Python-dotenv是一个非常有用的工具,可以使得Python项目变得更加安全和方便。