python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python .env

深入理解Python之.env

作者:无风听海

.env是一个纯文本文件,用于保存环境变量,本文就来介绍一下Python之.env环境变量配置的实现,具有一定的参考价值,感兴趣的可以了解一下

✅ 一、.env文件是什么?

.env 是一个纯文本文件,用于保存环境变量(环境配置)。它最初被广泛用于 Unix/Linux 系统,现在被各种语言(如 Python、Node.js、Go、Java)项目采纳,成为现代开发中配置与代码解耦的重要手段

📌 1.1.env文件的功能

功能说明
配置解耦将数据库地址、密钥、路径等配置从代码中抽离
管理多环境可以为不同环境(开发、测试、生产)使用不同的 .env 文件
跨平台兼容.env 文件是纯文本格式,可被广泛识别
安全性增强敏感信息如密码、Token 可独立管理,不暴露在代码仓库中

🧾 1.2.env文件格式语法详解

✅ 基本语法:

KEY=VALUE

✅ 完整语法示例:

# 字符串
APP_NAME=MyAwesomeApp

# 布尔值(字符串表示)
DEBUG=True

# 数字(仍作为字符串处理)
PORT=8080

# 空值
LOG_PATH=

# 引号包裹的值(包含空格)
WELCOME_MESSAGE="Hello, user!"

# 注释行
# This is a comment

⚠️ 注意事项:

🧩 1.3 使用场景

场景示例配置
本地开发配置调试模式开关、端口号
与数据库/服务连接配置数据库主机、用户名、密码等
Docker / CI / 云平台部署注入环境变量
应用参数配置日志路径、语言、运行模式等

💻 二、在 Python 中使用.env

✅ 2.1 安装依赖库

使用 python-dotenv 来加载 .env 文件:

pip install python-dotenv

✅ 2.2 示例项目结构

my_project/
├── .env
├── .env.example
├── config.py
└── main.py

📄 2.3.env示例

APP_NAME=MyService
DEBUG=True
PORT=8080
DATABASE_URL=postgresql://user:pass@localhost:5432/mydb

🐍 2.4 Python 使用方式

📄config.py

import os
from dotenv import load_dotenv

# 加载 .env 文件到系统环境变量中
load_dotenv()

# 从环境变量中读取配置项
APP_NAME = os.getenv("APP_NAME", "DefaultApp")
DEBUG = os.getenv("DEBUG", "False") == "True"
PORT = int(os.getenv("PORT", 8000))
DATABASE_URL = os.getenv("DATABASE_URL")

📄main.py

from config import APP_NAME, DEBUG, PORT, DATABASE_URL

def run():
    print(f"Starting {APP_NAME} on port {PORT}")
    print(f"Debug mode: {DEBUG}")
    print(f"Database: {DATABASE_URL}")

if __name__ == "__main__":
    run()

🔐 三、.env的安全性机制详解

.env 文件是明文文件,不加密,它的安全性来自你的使用方式,而不是文件自身

✅ 安全措施建议:

做法描述
❌ 不上传 .env 到 Git 仓库将 .env 加入 .gitignore
✅ 提交 .env.example用作参考模板,不包含任何敏感信息
✅ 设置文件权限本地设置为 chmod 600 .env,仅本人可读
✅ 在生产环境中使用系统环境变量不在服务器存储 .env,而是通过配置平台环境变量
✅ 不在日志中输出环境变量防止无意间泄露机密信息

📁.gitignore示例:

# 忽略本地配置
.env
.env.*
!*.env.example

📄.env.example示例(无敏感值):

APP_NAME=
DEBUG=False
PORT=8000
DATABASE_URL=

⚖️ 四、与其他配置文件类型的对比

配置文件类型是否支持结构化可注释易读性编程无关性配置复杂性推荐用途
.env❌(仅字符串键值)环境变量、轻量配置
.json✅(严格结构)配置接口、静态参数
.yaml / .yml✅(高度结构化)配置服务、K8s、Docker
.ini✅(简单结构)插件系统、应用启动配置
.py(Python 配置模块)❌(依赖解释器)任意复杂高级配置逻辑(如 FastAPI Settings)

✅.env的适用性总结

优点缺点
✅ 语法简单,学习成本低❌ 不支持复杂结构(如嵌套字典)
✅ 跨语言、跨平台兼容性好❌ 所有值为字符串,需要手动转换类型
✅ 与系统环境变量兼容❌ 不能直接包含列表或嵌套结构
✅ 非开发人员也能理解和编辑❌ 不适用于需要大量配置的复杂场景

✅ 五、总结

项目内容
.env 是一个文本文件,保存键值对形式的环境变量
用途用于安全、统一地管理项目配置
Python 中使用借助 python-dotenv,结合 os.getenv()
安全性实践不上传、设权限、用 .env.example 提供模板
对比其他配置格式.env 简单轻量,适合小型/中型配置;复杂配置建议用 YAML/JSON

到此这篇关于深入理解Python之.env的文章就介绍到这了,更多相关Python .env内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

您可能感兴趣的文章:
阅读全文