news 2026/6/14 23:34:03

.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/6/10 9:28:22

Z-Image-Turbo建筑图像生成尝试:现代简约风格能否胜任?

Z-Image-Turbo建筑图像生成尝试:现代简约风格能否胜任? 引言:AI图像生成在建筑设计中的新探索 随着生成式AI技术的快速发展,建筑设计领域正迎来一场视觉创作的范式变革。阿里通义推出的Z-Image-Turbo WebUI作为一款基于Diffusion架…

作者头像 李华
网站建设 2026/6/10 9:26:52

Z-Image-Turbo模型加载耗时多久?首次启动预期管理

Z-Image-Turbo模型加载耗时多久?首次启动预期管理 阿里通义Z-Image-Turbo WebUI图像快速生成模型 二次开发构建by科哥 在AI图像生成领域,启动效率与用户体验的平衡是决定工具实用性的关键因素之一。阿里通义推出的Z-Image-Turbo模型以其“1步出图”的高效…

作者头像 李华
网站建设 2026/6/10 9:24:33

对比实验数据说话:M2FP在遮挡场景下AP指标高出22%

对比实验数据说话:M2FP在遮挡场景下AP指标高出22% 📊 遮挡挑战下的性能突破:M2FP为何脱颖而出? 在多人视觉理解任务中,人体遮挡是长期存在的核心难题。当多个个体在图像中发生重叠、肢体交叉或部分被遮蔽时&#xff0c…

作者头像 李华
网站建设 2026/6/13 12:38:03

推荐3个实用人体解析项目:M2FP支持Flask快速二次开发

推荐3个实用人体解析项目:M2FP支持Flask快速二次开发 🧩 M2FP 多人人体解析服务 (WebUI API) 项目背景与核心价值 在计算机视觉领域,人体解析(Human Parsing) 是一项关键的细粒度语义分割任务,目标是将人体…

作者头像 李华
网站建设 2026/6/13 20:18:27

短视频特效开发:M2FP实现实时换装滤镜底层支持

短视频特效开发:M2FP实现实时换装滤镜底层支持 在短视频内容爆发式增长的今天,用户对个性化、互动性强的视觉特效需求日益旺盛。其中,“实时换装”类滤镜因其趣味性和社交传播性,已成为各大平台的核心功能之一。然而,实…

作者头像 李华