当前位置: 首页 > article >正文

Python项目中添加环境配置文件

在Python项目中添加配置文件有多种方式,每种方式对应不同的依赖包和读取方法。以下是 7种主流配置管理方案,包含安装命令、配置示例和变量读取方法:


1. .env 文件(推荐简单项目)

依赖包: python-dotenv

pip install python-dotenv

.env 文件内容:

DEBUG=true
API_KEY=your_key
DB_HOST=localhost

读取方式:

from dotenv import load_dotenv
import osload_dotenv()  # 默认加载当前目录下的.env文件debug_mode = os.getenv("DEBUG")  # 返回字符串
db_host = os.getenv("DB_HOST", "127.0.0.1")  # 带默认值

2. JSON/YAML 配置文件

依赖包: 无需安装(标准库)或 pyyaml

pip install pyyaml  # 仅YAML需要

config.json:

{"database": {"host": "localhost","port": 5432}
}

读取方式:

import jsonwith open('config.json') as f:config = json.load(f)db_host = config["database"]["host"]

3. INI 格式(传统Windows风格)

依赖包: 标准库 configparser
config.ini:

[database]
host = localhost
port = 5432

读取方式:

from configparser import ConfigParserconfig = ConfigParser()
config.read('config.ini')db_port = config.getint('database', 'port')  # 自动转换类型

4. TOML 格式(Python生态新宠)

依赖包: tomltomli

pip install toml

config.toml:

[database]
host = "localhost"
ports = [8000, 8001]

读取方式:

import tomlwith open("config.toml", "r") as f:config = toml.load(f)ports = config["database"]["ports"]

5. 环境变量直接管理(生产环境推荐)

无需配置文件,直接在系统或容器中设置变量:

# Linux/Mac
export DB_HOST=localhost# Windows
set DB_HOST=localhost

读取方式:

import osdb_host = os.environ["DB_HOST"]  # 直接读取系统变量

6. Pydantic 配置模型(类型安全推荐)

依赖包: pydantic + python-dotenv

pip install pydantic python-dotenv

.env 文件:

DB_HOST=localhost

读取方式:

from pydantic import BaseSettingsclass Settings(BaseSettings):db_host: strdb_port: int = 5432  # 默认值class Config:env_file = ".env"settings = Settings()
print(settings.db_host)  # 自动类型转换

7. 动态热加载配置(高级场景)

依赖包: watchdog + pyyaml

pip install watchdog pyyaml

config.yaml:

app:refresh_interval: 60

动态监听文件变化:

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
import yamlclass ConfigHandler(FileSystemEventHandler):def on_modified(self, event):if event.src_path.endswith('config.yaml'):with open(event.src_path) as f:global configconfig = yaml.safe_load(f)observer = Observer()
observer.schedule(ConfigHandler(), path='.')
observer.start()

方案对比总结

方案适合场景类型安全动态更新复杂度
.env简单项目/开发环境
JSON/YAML结构化配置⭐⭐
INI传统Windows应用
TOML现代Python项目⭐⭐
环境变量生产环境/容器化
Pydantic需要类型验证的项目⭐⭐
动态加载需要运行时修改配置⭐⭐⭐

最佳实践选择

  1. 开发环境.env + python-dotenv
  2. 生产环境:环境变量 + Pydantic验证
  3. 复杂配置:TOML/YAML + Pydantic模型
  4. 动态需求:Watchdog监听 + YAML

💡 安全提示:敏感信息(如密码/API密钥)永远不要提交到版本库,应通过环境变量或密钥管理服务传递。

http://www.lryc.cn/news/2404136.html

相关文章:

  • 【区块链基础】区块链的 Fork(分叉)深度解析:原理、类型、历史案例及共识机制的影响
  • IOS 打包账号发布上传和IOS Xcode证书配置
  • 使用 HTML + JavaScript 实现文章逐句高亮朗读功能
  • 【CSS-4】掌握CSS文字样式:从基础到高级技巧
  • 双碳时代,能源调度的难题正从“发电侧”转向“企业侧”
  • 3. 简述node.js特性与底层原理
  • OpenCV CUDA模块图像处理------创建一个模板匹配(Template Matching)对象函数createTemplateMatching()
  • 【Kubernetes】K8s 之 ETCD - 恢复备份
  • CMS、G1、ZGC、Shenandoah 的全面对比
  • RabbitMQ 学习
  • 如何轻松、安全地管理密码(新手指南)
  • AWS App Mesh实战:构建可观测、安全的微服务通信解决方案
  • 9.axios底层原理,和promise的对比(2)
  • 用HTML5 Canvas打造交互式心形粒子动画:从基础到优化实战
  • Gartner《How to Create and Maintain a Knowledge Base forHumans and AI》学习报告
  • 【软件工具】批量OCR指定区域图片自动识别内容重命名软件使用教程及注意事项
  • PyTorch 中cumprod函数计算张量沿指定维度的累积乘积详解和代码示例
  • docker镜像下载到本地,并导入服务器
  • 数据通信与计算机网络——数字传输
  • oracle 归档日志与RECOVERY_FILE_DEST 视图
  • 黄柏基因组-小檗碱生物合成的趋同进化-文献精读142
  • 前端杂货铺——TodoList
  • Spring Boot SSE流式输出+AI消息持久化升级实践:从粗暴到优雅的跃迁
  • camera功能真的那么难用吗
  • Model Context Protocol (MCP) 是一个前沿框架
  • SQL Server 日期时间类型全解析:从精确存储到灵活转换
  • Android Test3 获取的ANDROID_ID值不同
  • [蓝桥杯 2024 国 B] 立定跳远
  • 内容力重塑品牌增长:开源AI大模型驱动下的智能名片与S2B2C商城赋能抖音生态种草范式
  • 手机号在网状态查询接口如何用PHP实现调用?