news 2026/4/16 10:51:28

.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/16 10:13:34

Z-Image-Turbo低显存设备运行优化技巧(<8GB)

Z-Image-Turbo低显存设备运行优化技巧&#xff08;<8GB&#xff09; 引言&#xff1a;轻量化AI图像生成的现实挑战 随着AIGC技术的普及&#xff0c;越来越多开发者和创作者希望在本地设备上部署高性能图像生成模型。阿里通义推出的 Z-Image-Turbo WebUI 凭借其快速推理能力…

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

【Java毕设全套源码+文档】基于springboot的高校体育运动会管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/16 1:17:47

【Java毕设全套源码+文档】基于springboot的校园外卖配送系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

作者头像 李华
网站建设 2026/4/16 10:19:16

Z-Image-Turbo沙尘暴气候图像生成

Z-Image-Turbo沙尘暴气候图像生成 阿里通义Z-Image-Turbo WebUI图像快速生成模型 二次开发构建by科哥 在极端气候模拟与视觉艺术创作的交叉领域&#xff0c;沙尘暴场景的高保真图像生成正成为AI图像合成的重要应用场景。基于阿里通义实验室发布的 Z-Image-Turbo 模型&#xff0…

作者头像 李华
网站建设 2026/4/15 17:40:50

减少人工标注成本:M2FP自动生成人体部位Mask数据集

减少人工标注成本&#xff1a;M2FP自动生成人体部位Mask数据集 &#x1f4d6; 项目简介&#xff1a;构建高效人体解析自动化流水线 在计算机视觉领域&#xff0c;人体解析&#xff08;Human Parsing&#xff09; 是一项关键的细粒度语义分割任务&#xff0c;目标是将图像中的人…

作者头像 李华