深入理解Python之.env

 更新时间:2025年08月05日 09:02:15   作者:无风听海  
.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

⚠️ 注意事项:

  • 不要加空格KEY = VALUE 是错误写法。
  • 所有值都是字符串(使用时需自行转换)。
  • 不支持嵌套结构(不像 JSON / YAML)。

🧩 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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • Python利用plotly绘制正二十面体详解

    Python利用plotly绘制正二十面体详解

    plotly的Python软件包是一个开源的代码库,是一款擅长交互的Python绘图库。本文就来用plotly绘制正二十面体,需要的可以参考一下
    2023-02-02
  • Python如何对齐字符串

    Python如何对齐字符串

    这篇文章主要介绍了Python如何对齐字符串,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • python实现超市商品销售管理系统

    python实现超市商品销售管理系统

    这篇文章主要为大家详细介绍了python实现超市商品销售管理系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • python机器学习实战之最近邻kNN分类器

    python机器学习实战之最近邻kNN分类器

    这篇文章主要介绍了python机器学习实战之最近邻kNN分类器,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • 我喜欢你 抖音表白程序python版

    我喜欢你 抖音表白程序python版

    我喜欢你!这篇文章主要为大家详细介绍了抖音表白程序python版的实现方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • Django框架 查询Extra功能实现解析

    Django框架 查询Extra功能实现解析

    这篇文章主要介绍了Django框架 查询Extra功能实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • Django 前后台的数据传递的方法

    Django 前后台的数据传递的方法

    本篇文章主要介绍了Django 前后台的数据传递的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • Python实现的简单读写csv文件操作示例

    Python实现的简单读写csv文件操作示例

    这篇文章主要介绍了Python实现的简单读写csv文件操作,结合实例形式分析了Python使用csv模块针对csv文件进行读写操作的相关实现技巧与注意事项,需要的朋友可以参考下
    2018-07-07
  • 解决同一目录下python import报错问题

    解决同一目录下python import报错问题

    这篇文章主要介绍了解决同一目录下python import报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • python日志模块loguru详解

    python日志模块loguru详解

    大家好,本篇文章主要讲的是python日志模块loguru详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2022-02-02

最新评论