news 2026/4/23 18:51:02

.env 文件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
.env 文件

一、Python中使用.env文件的完整步骤

1. 准备工作:创建.env文件

在Python项目根目录下新建.env文件,格式和Node.js一致(KEY=VALUE),示例内容如下(包含数据库、API等敏感配置):

# .env 文件(Python项目) # 基础配置 FLASK_APP=app.py FLASK_DEBUG=True PORT=5000 # 敏感配置(数据库信息) DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=my_python_db_123 DB_NAME=my_project_db # 第三方API密钥 WEATHER_API_KEY=abc123456xyz789

⚠️ 注意:和Node.js一样,等号前后不要加空格,字符串无需加引号,注释用#开头。

2. 安装加载.env的依赖

Python没有内置加载.env的功能,需要安装python-dotenv库(Python生态中最常用的.env处理库):

# 安装依赖(建议在虚拟环境中执行)pipinstallpython-dotenv
3. 在Python代码中加载并使用.env变量

创建一个Python文件(如main.py),在代码最顶部加载.env文件,避免变量未生效:

# main.py# 1. 导入dotenv库的load_dotenv函数fromdotenvimportload_dotenv# 2. 导入os模块,用于读取环境变量importos# 3. 加载.env文件(默认读取项目根目录的.env)# 如果.env文件不在根目录,可指定路径:load_dotenv(dotenv_path="./config/.env")load_dotenv()# 4. 读取环境变量:通过os.getenv("KEY")或os.environ["KEY"]获取# 推荐用os.getenv(),因为变量不存在时返回None,不会报错;os.environ[]会抛KeyErrorflask_app=os.getenv("FLASK_APP")flask_debug=os.getenv("FLASK_DEBUG")port=os.getenv("PORT")# 敏感配置读取db_host=os.getenv("DB_HOST")db_port=os.getenv("DB_PORT")db_user=os.getenv("DB_USER")db_password=os.getenv("DB_PASSWORD")db_name=os.getenv("DB_NAME")# API密钥读取weather_api_key=os.getenv("WEATHER_API_KEY")# 5. 打印验证(实际开发中不要打印敏感信息!)print("基础配置:")print(f"FLASK_APP:{flask_app}")print(f"FLASK_DEBUG:{flask_debug}")print(f"PORT:{port}")# 模拟数据库连接配置(仅示例,无实际连接)db_config={"host":db_host,"port":int(db_port),# 注意:从.env读取的都是字符串,需手动转换类型"user":db_user,"password":db_password,"database":db_name}print("\n数据库配置:")print(db_config)

运行这个Python文件,输出结果如下(和你.env中的配置一致):

基础配置: FLASK_APP: app.py FLASK_DEBUG: True PORT: 5000 数据库配置: {'host': 'localhost', 'port': 3306, 'user': 'root', 'password': 'my_python_db_123', 'database': 'my_project_db'}
4. 关键安全步骤:配置.gitignore

和Node.js一样,必须把.env加入.gitignore,避免提交到Git仓库:

# .gitignore 文件中添加 # Python项目通用忽略(可保留) __pycache__/ *.py[cod] *.so env/ venv/ # 核心:忽略.env文件 .env # 多环境配置文件也忽略 .env.* # 例外:提交示例模板 !.env.example

创建.env.example作为模板(可提交到仓库,供团队参考):

# .env.example(Python项目,可提交) FLASK_APP=app.py FLASK_DEBUG=True PORT=5000 # 数据库配置(请填写真实值) DB_HOST=localhost DB_PORT=3306 DB_USER=root DB_PASSWORD=你的数据库密码 DB_NAME=你的数据库名 # API密钥(请填写真实值) WEATHER_API_KEY=你的天气API密钥
5. 进阶:Python多环境配置

如果需要区分开发/生产/测试环境,可创建多个.env文件:

  • .env.dev:开发环境
  • .env.prod:生产环境
  • .env.test:测试环境

加载指定环境的配置:

# main.pyfromdotenvimportload_dotenvimportos# 加载生产环境配置(指定文件路径)load_dotenv(dotenv_path=".env.prod")# 读取生产环境变量db_password=os.getenv("DB_PASSWORD")print(f"生产环境数据库密码:{db_password}")

也可以通过命令行参数动态指定环境:

# 运行时指定加载开发环境python main.py --env dev

对应的代码逻辑(示例):

# main.pyfromdotenvimportload_dotenvimportosimportsys# 获取命令行参数env=sys.argv[1]iflen(sys.argv)>1else"dev"# 根据参数加载对应.env文件load_dotenv(dotenv_path=f".env.{env}")# 读取变量print(f"当前环境:{env}")print(f"PORT:{os.getenv('PORT')}")

二、Python使用.env的注意事项

  1. 类型转换:从.env读取的所有变量都是字符串类型,如果需要数字(如端口号、超时时间),需手动用int()/float()转换;
  2. 默认值os.getenv()支持设置默认值,避免变量不存在时出错:
    # 如果.env中没有配置TIMEOUT,默认使用30timeout=int(os.getenv("TIMEOUT",30))
  3. 框架集成:很多Python框架(如Flask、Django)可自动识别.env文件(Flask需安装python-dotenv,Django需手动加载);
  4. 生产环境建议:服务器上的.env文件要设置权限(如Linux下chmod 600 .env),仅允许运行程序的用户访问;生产环境也可直接通过服务器环境变量配置,替代.env文件。

总结

  1. Python中使用.env的核心流程:创建.env文件 → 安装python-dotenvload_dotenv()加载 →os.getenv()读取变量 → 配置.gitignore忽略.env;
  2. 关键注意点:从.env读取的变量都是字符串,需按需转换类型;用os.getenv()而非os.environ[]可避免变量不存在时报错;
  3. .env的安全核心依然是不提交到版本库,这是保护敏感信息的关键。

关键点回顾

  • Python依赖python-dotenv库加载.env,核心函数是load_dotenv()os.getenv()
  • 必须将.env加入.gitignore,仅提交.env.example作为模板;
  • 读取的变量默认是字符串,需手动转换数字类型,建议给os.getenv()设置默认值提升代码健壮性。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 13:43:31

Z-Image-Turbo电商平台应用:商品主图、详情页配图自动化

Z-Image-Turbo电商平台应用:商品主图、详情页配图自动化 引言:电商视觉内容的效率革命 在当前竞争激烈的电商平台中,高质量的商品视觉呈现已成为影响转化率的核心因素。传统依赖设计师人工修图、拍摄和排版的方式,不仅成本高、周…

作者头像 李华
网站建设 2026/4/23 15:00:27

测速网对比测试:Z-Image-Turbo比同类快30%

测速网对比测试:Z-Image-Turbo比同类快30% 阿里通义Z-Image-Turbo WebUI图像快速生成模型 二次开发构建by科哥 在AI图像生成领域,速度与质量的平衡始终是工程落地的核心挑战。阿里通义实验室推出的 Z-Image-Turbo 模型,基于扩散模型架构进行…

作者头像 李华
网站建设 2026/4/23 17:09:46

M2FP与Mask R-CNN对比:在重叠场景下分割精度提升40%

M2FP与Mask R-CNN对比:在重叠场景下分割精度提升40% 📌 引言:人体解析的挑战与技术演进 随着计算机视觉在虚拟试衣、智能安防、人机交互等领域的广泛应用,多人人体解析(Human Parsing) 成为一项关键基础能…

作者头像 李华
网站建设 2026/4/15 15:13:22

教育领域创新应用:M2FP辅助舞蹈教学中的动作分解分析

教育领域创新应用:M2FP辅助舞蹈教学中的动作分解分析 🧩 M2FP 多人人体解析服务:技术赋能教育新场景 在传统舞蹈教学中,动作的精准性与规范性是核心训练目标。然而,依赖教师肉眼观察和口头反馈的方式存在主观性强、细节…

作者头像 李华
网站建设 2026/4/23 14:02:25

Lenovo推出Agentic AI和Lenovo xIQ平台,全面加速企业AI部署,规模化交付全生命周期混合AI解决方案

Lenovo Agentic AI为各类组织提供所需的治理、工具、建议和持续支持,助力其更快速、更智能地部署和管理生产就绪型AI智能体,将AI发展蓝图转化为可衡量的影响。 全新推出的三大Lenovo xIQ交付平台,通过提供让企业自信地扩展AI规模所需的自动化…

作者头像 李华
网站建设 2026/4/23 14:01:13

Z-Image-Turbo环保主题创作:气候变化、生态保护视觉传达

Z-Image-Turbo环保主题创作:气候变化、生态保护视觉传达 阿里通义Z-Image-Turbo WebUI图像快速生成模型 二次开发构建by科哥 在AI生成内容(AIGC)迅速发展的今天,图像生成技术正从“可用”迈向“高效、可控、可定制”的新阶段。阿…

作者头像 李华