python-dotenv:用.env储存系统变量并在Python3代码中调用

诸神缄默不语-个人CSDN博文目录

在开发过程中,经常需要使用到各种配置信息,如数据库连接字符串、API 密钥等。为了保证这些信息的安全性,以及提高代码的可维护性和灵活性,我们通常会将这些敏感信息存储在环境变量中,而不是直接硬编码在源代码里。本文将介绍如何使用 python-dotenv 包来管理这些环境变量,确保你的 Python 项目更加安全和灵活。

python-dotenv官方pip网站:python-dotenv · PyPI

文章目录

  • 为什么要使用 .env 文件储存系统变量
    • 安全性
    • 便于管理
    • 灵活性
  • 使用 python-dotenv 管理环境变量
    • 安装 python-dotenv
    • 创建和配置 .env 文件
    • 在 Python 中加载和使用环境变量
  • 结语

为什么要使用 .env 文件储存系统变量

安全性

将敏感信息如 API 密钥、数据库密码等存放在 .env 文件中可以有效地避免这些信息被提交到版本控制系统(如 Git)中,减少敏感信息泄露的风险。
有助于遵循最佳实践,即不在源代码中硬编码敏感信息。

便于管理

通过使用 .env 文件,所有的配置信息都集中在一个地方,方便管理和更新。特别是在项目需要在多种环境(开发、测试、生产等)运行时,可以通过更换不同的 .env 文件来快速切换环境配置。

灵活性

环境变量的使用提高了项目的灵活性,允许同一份代码在不同的环境下运行而无需修改代码本身。这在多人协作和应用部署时尤为重要。

使用 python-dotenv 管理环境变量

python-dotenv 是一个 Python 库,可以用来读取 .env 文件中的环境变量,并将它们加载到 Python 的环境变量中。这使得在代码中使用这些变量变得非常简单和直接。

安装 python-dotenv

首先,你需要安装 python-dotenv。可以通过 pip 命令轻松安装:

pip install python-dotenv

创建和配置 .env 文件

在项目的根目录下创建一个名为 .env 的文件。在这个文件中,你可以定义需要的环境变量,例如:

# 这是 .env 文件中的注释
DATABASE_URL="mysql://username:password@localhost/dbname"
API_KEY="your-secret-api-key"

请注意,.env 文件支持 # 开头的注释。

在 Python 中加载和使用环境变量

接下来,你可以在 Python 代码中使用 python-dotenv 来加载这些环境变量。一种常见的做法是在项目的入口文件(如 app.pymain.py)中加载这些变量:

from dotenv import load_dotenv
import os

# 加载 .env 文件
load_dotenv()

# 使用环境变量
database_url = os.getenv('DATABASE_URL')
api_key = os.getenv('API_KEY')

print("Database URL:", database_url)
print("API Key:", api_key)

这段代码首先从 .env 文件加载环境变量,然后通过 os.getenv 方法访问这些变量。

结语

通过使用 python-dotenv.env 文件来管理环境变量,你的 Python 项目将更加安全、易于管理和灵活。这种方法尤其适合处理敏感信息和支持多环境配置,是现代应用开发的一种最佳实践。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/604268.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Java特性之设计模式【代理模式】

一、代理模式 概述 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口 主要解决: 在直接访问…

深入了解 NumPy:深度学习中的数学运算利器

文章目录 1. 导入NumPy2. 创建NumPy数组3. 数组的算术运算4. N维数组4.1 创建和操作多维数组4.2 高维数组 5. NumPy的广播功能5.1 基本广播示例5.2 更复杂的广播示例 6. 访问数组元素6.1 基于索引的访问6.2 遍历数组6.3 基于条件的访问6.4 高级索引6.5 性能考虑 在深度学习和数…

论文阅读_使用有向无环图实现流程工程_AgentKit

英文名称: AgentKit: Flow Engineering with Graphs, not Coding 中文名称: AgentKit:使用图而非编码进行流程工程 链接: https://arxiv.org/pdf/2404.11483.pdf 代码: https://github.com/holmeswww/AgentKit 作者: Yue Wu, Yewen Fan, So Yeon Min, Shrimai Prabh…

射频无源器件之耦合器

一. 耦合器的作用 在射频电路中,射频耦合器将一路微波功率按比例分成几路,用于检测或监测信号,如功率测量和波检测,还可改变信号的幅度、相位等特性,以满足不同的通信需求。根据输入与耦合端的功率差,常被分为5dB、6dB、10dB等耦合器。射频耦合器的类型主要包括定向耦合…

区块链 | NFT 相关论文:Preventing Content Cloning in NFT Collections(三)

🐶原文: Preventing Content Cloning in NFT Collections 🐶写在前面: 这是一篇 2023 年的 CCF-C 类,本博客只记录其中提出的方法。 F C o l l N F T \mathbf{F_{CollNFT}} FCollNFT​ and Blockchains with Native S…

命名空间、C++的输入输出、缺省参数(默认参数)、函数重载

🐶博主主页:ᰔᩚ. 一怀明月ꦿ ❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C,linux 🔥座右铭:“不要等到什么都没有了…

基于Springboot的校园健康驿站管理系统(有报告)。Javaee项目,springboot项目。

演示视频: 基于Springboot的校园健康驿站管理系统(有报告)。Javaee项目,springboot项目。 项目介绍: 采用M(model)V(view)C(controller)三层体系…

TMS320F2812DSP最小系统原理图及PCB文件

目录 1、原理图 2、PCB 资料下载地址:TMS320F2812DSP最小系统原理图及PCB文件 1、原理图 2、PCB

视频转GIF动图:一键批量操作技巧,轻松实现动态图像转换

在数字媒体时代,GIF动图因其小巧、循环播放的特性,在网络传播中占据了重要地位。而将视频转换为GIF动图,不仅可以快速捕捉视频中的精彩瞬间,还能为社交媒体、网站和博客等内容创作增添生动与活力。本文将介绍如何通过一键批量操作…

三、VGA接口驱动与图像显示动态移动

文章目录 一、参数介绍二、彩条显示2.1 模块系统架构框图2.2 行、场同步波形:2.3 代码三、VGA 图像显示动态移动3.1波形设计3.2代码 一、参数介绍 对于普通的 VGA 显示器,共有 5 个信号:R、G、B 三基色;HS(行同步信号&#xff09…

Mysql基础(五)外键约束

一 外键 激励: 每天进步一点点即可 ① 思考 1、在MySQL中,我们知道主键 PRIMARY KEY的主要作用是唯一区分表中的各个行 [记录];思考:但是对于外键 foreign key比较陌生? 那么外键作用以及限制条件和目的呢? ② 外键的定义 1、外键是某个表 A中…

第一天复习Qt文件读取

Qt文件操作: 1、QFile QTextStream操作文件案例: 1、打开文件 QFile file(absolute filepath | relative path); file.readLine()返回内容长度,如果为-1就是读取失败 file. Close()读取后关闭 file.errorString()返回文件打开发生的错误2、…

如何购买阿里云99计划的ECS云服务器?99元购买阿里云2核2G3M服务器教程

阿里云助力中小企业和开发者无忧上云的“99计划”中有两款性价比超高的ECS云服务器,2026年3月31日活动结束前新购和续费价格一样。 其中个人和企业新老用户同享的2核2G3M服务器仅需99元/年(续费同价),企业新老用户同学的2核4G5M仅…

外贸企业6大客户开发渠道优缺点全面解析 | 箱讯科技国际贸易综合服务平台

一、展会的重要性 展会,作为历史悠久的客户开发渠道,一直备受企业推崇。它汇聚了来自不同行业的企业,为大家提供了一个集中展示产品和技术的大舞台。在没有互联网的年代,展会几乎成为外贸交易的核心媒介。至今,它依然…

射频无源器件之巴伦

一. 巴伦的作用 Balun,balanced-unbalanced的缩写,即平衡-不平衡转换器,是一种三端口无源器件,其本质是通过电感线圈的相互耦合实现的信号转换。用于平衡信号(差分信号,即振幅相等、相位相差180 的两个信号)与非平衡信号(单端信号)的相互转换。 Balun是高频电路重要器…

《编译原理》阅读笔记:p1-p3

《编译原理》学习第 1 天,p1-p3总结,总计 3 页。 一、技术总结 1.compiler(编译器) p1, But, before a program can be run, it first must be translated into a form in which it can be executed by a computer. The software systems that do thi…

水面垃圾清理机器人的视觉算法研究

卷积神经网络是一种分层的数据表示模型,通常由数据输入层、卷积层、池化层、 非线性激活函数、全连接层以及输出结果预测层等组成,其中卷积层、池化层和非线 性激活函数是卷积神经网络中的重要组成部分。此外,有些模型会增加其他的层(归一 化…

16.接口自动化学习-编码处理与装饰器

1.编码和解码 编码:将自然语言翻译成计算机可以识别的语言 hello–01010 解码:将机器识别的语言翻译成自然语言 2.编码格式 UTF-8 GBK unicode 3.编码操作 #编码操作str1"hello呀哈哈哈"str2str1.encode(gbk)print(str2)print(type(str2))…

面试笔记——多线程使用场景

线程池使用场景(CountDownLatch, Future) CountDownLatch CountDownLatch(闭锁/倒计时锁)用来进行线程同步协作,等待所有线程完成倒计时(一个或者多个线程,等待其他多个线程完成某件…

漏扫神器Invicti V2024.4.0专业版

前言 Invicti Professional是Invicti Security公司推出的一个产品,它是一种高级的网络安全扫描工具。Invicti Professional旨在帮助组织发现和修复其网络系统中的潜在安全漏洞和弱点。它提供了全面的漏洞扫描功能,包括Web应用程序和网络基础设施的漏洞扫…
最新文章