news 2026/9/1 16:39:22

Python 中获取环境变量的全面指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 中获取环境变量的全面指南

中获取环境变量的全面指南

身处开发进程里, 环境变量属于一种相当关键的配置途径, 它能让我们于不改动代码的情形下, 依据不一样的运行环境(像是开发环境、测试环境、生产环境)去动态调节程序的表现, 提供了简便且强大的办法来获取环境变量, 本文会详细阐释怎样在其中获取环境变量, 涵盖基础概念、使用方式、常见实践以及最佳实践。

目录, 基础概念, 使用方法, 常见实践, 最佳实践, 小结, 参考资料 ,一个, 基础概念, 乃是, 什么, 是, 环境变量。

操作系统里存储有种键值对名为环境变量, 操作系统可对其进行访问, 运行于该系统上的程序同样能够访问。存储一系列系统级别的配置信息多会采用环境变量, 像是路径、数据库连接信息、API密钥这类。不同操作系统管理环境变量拥有各异方式, 不过系统会给出统一接口用以获取这些变量。

为什么要使用环境变量2. 使用方法

于特定情境下, 能够借助 os 模块去获取环境变量。os 这个对象, 它属于一种字典类型, 其中涵盖了当下系统的全部环境变量。

示例代码

import os # 获取单个环境变量 # 如果环境变量存在,则返回其值;如果不存在,则返回 None my_variable = os.environ.get('MY_VARIABLE') print(f"MY_VARIABLE 的值是: {my_variable}") # 获取所有环境变量 for key, value in os.environ.items(): print(f"{key}: {value}")

代码解释3. 常见实践读取数据库连接信息

进行数据库应用开发之际, 一般来讲, 得把数据库的连接信息, 像主机名、端口、用户名、密码等, 存放在环境变量里, 以此来提升安全性。

import os import psycopg2 # 从环境变量中获取数据库连接信息 DB_HOST = os.environ.get('DB_HOST', 'localhost') DB_PORT = os.environ.get('DB_PORT', '5432') DB_USER = os.environ.get('DB_USER', 'user') DB_PASSWORD = os.environ.get('DB_PASSWORD', 'password') DB_NAME = os.environ.get('DB_NAME', 'mydb') try: # 连接到数据库 conn = psycopg2.connect( host=DB_HOST, port=DB_PORT, user=DB_USER, password=DB_PASSWORD, database=DB_NAME ) print("成功连接到数据库!") except psycopg2.Error as e: print(f"连接数据库时出错: {e}")

使用 API 密钥

调用第三方 API 的时候, 一般是要提供 API 密钥的。把 API 密钥存于环境变量内, 能够防止把它硬编码到代码里。

import os import requests # 从环境变量中获取 API 密钥 API_KEY = os.environ.get('API_KEY') if API_KEY: headers = { 'Authorization': f'Bearer {API_KEY}' } response = requests.get('https://api.example.com/data', headers=headers) if response.status_code == 200: print(response.json()) else: print(f"请求失败,状态码: {response.status_code}") else: print("未找到 API 密钥,请设置环境变量。")

4. 最佳实践设置默认值

运用os..get()方法之际, 提议给环境变量设定默认值, 借此防止于环境变量未作设置之时, 因出现None值而引发的错误。

import os # 设置默认值 MY_VARIABLE = os.environ.get('MY_VARIABLE', 'default_value') print(f"MY_VARIABLE 的值是: {MY_VARIABLE}")

验证环境变量

在使用环境变量之前,建议对其进行验证,确保其值符合预期。

import os DB_PORT = os.environ.get('DB_PORT', '5432') try: port = int(DB_PORT) if port < 1 or port > 65535: raise ValueError("端口号必须在 1 到 65535 之间。") print(f"有效的数据库端口号: {port}") except ValueError as e: print(f"无效的数据库端口号: {e}")

使用 .env 文件

于开发者所使用的开发环境里面, 能够借助.env文件达成对环境变量的妥善管理, 此过程里, 有特定的库, 它能够为我们助力, 助力我们达成把.env文件之中的环境变量予以有效加载。

from dotenv import load_dotenv import os # 加载 .env 文件 load_dotenv() # 获取环境变量 MY_VARIABLE = os.environ.get('MY_VARIABLE') print(f"MY_VARIABLE 的值是: {MY_VARIABLE}")

.env 文件示例

MY_VARIABLE=my_value DB_HOST=localhost DB_PORT=5432

5. 小结

掌握在特定情境里获取环境变量这一技能, 极具实用价值, 能使程序的安全性以及可配置性获得提升。借助运用os模块, 我们能够不费吹灰之力地取得并运用系统的环境变量。于实际应用场景当中, 建议进行默认值的设置、对环境变量予以验证, 并且借助.env文件去管理开发环境下的环境变量。

6. 参考资料

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/1 16:37:39

2023携程春招技术岗笔试复盘:考点剖析与备战指南

刚参加完2023年携程春招技术通用岗第二批笔试&#xff0c;趁记忆还热乎&#xff0c;赶紧把题目类型、考点分布、做题节奏这些整理一遍。这批笔试整体给我的感觉是&#xff1a;不像某些大厂上来就搞 hard 级算法题压场&#xff0c;携程更看重基础扎实度、工程思维和快速编码能力…

作者头像 李华
网站建设 2026/9/1 16:37:34

计算机毕业设计之基于Java 的汽车维修保养管理系统的设计与实现

随着新世纪无纸化办公方式的普及&#xff0c;自动化信息处理和基于网络的信息交互方式已被广泛应用。现在很多行业基本上都是交由计算机进行管理和测试&#xff0c;网络与计算机已成为整个线上管理体系中的重要组成部分。虽然信息技术广泛应用和数据存取更加方便&#xff0c;但…

作者头像 李华
网站建设 2026/9/1 16:37:13

Zephyr RTOS深度解析:从环境搭建到与FreeRTOS的2026选型对比

这次我们看的不是又一个套壳工具&#xff0c;而是一个真正对标 Linux、却跑在微控制器上的实时操作系统&#xff1a;Zephyr。Zephyr 的定位很特殊&#xff0c;它不是 FreeRTOS 那种“小而美”的任务调度器&#xff0c;也不是 RT-Thread 那种“国产全功能物联网 OS”&#xff0c…

作者头像 李华
网站建设 2026/9/1 16:36:27

Maya风格化场景建模实战:从布线逻辑到日系烤肉店全流程解析

1. 先搞清楚“风格化场景”到底要解决什么问题如果你刚开始接触 Maya 场景建模&#xff0c;看到“日系风格化烤肉店”这种标题&#xff0c;可能会觉得这是一个炫技的复杂项目。但实际做下来&#xff0c;你会发现它的核心价值不在于做出多么写实的模型&#xff0c;而在于通过一个…

作者头像 李华
网站建设 2026/9/1 16:34:37

pdf转ppt的几种方法,亲测有效的6种方案

技术背景与需求分析 PDF与PPT虽然都在演示场景中频繁出现&#xff0c;但两者的底层结构完全不同。PDF以“页面描述”为核心&#xff0c;每个元素都有固定坐标和层级关系&#xff1b;PPT则以“幻灯片”为组织单元&#xff0c;文字、形状、图表各自独立可编辑。因此&#xff0c;…

作者头像 李华
网站建设 2026/9/1 16:34:37

科大讯飞飞凡计划研发岗笔试复盘:题型拆解与备考指南

2024年秋招我只投了不到十家公司&#xff0c;科大讯飞是其中为数不多做了完整笔试记录的。飞凡计划研发岗这场笔试&#xff0c;我考完就趁着记忆还热乎&#xff0c;把题目和踩过的坑全部复盘了一遍。身边几个同学后来问我考了什么&#xff0c;我每次都要重新讲一遍&#xff0c;…

作者头像 李华