当前位置: 首页 > ds >正文

浅谈Python中的os.environ:环境变量交互机制

什么是 os.environ

os.environ 是 Python 提供的一个 “环境变量字典”,它包含了当前操作系统环境变量的全部信息。

  • Python 的 os 模块 提供。
  • 本质上是一个特殊的 字典(os._Environ 对象),键是环境变量名称,值是对应的字符串。

1. 我们可以把 os.environ 理解为:

“当前 Python 进程启动时,继承自操作系统环境变量的映射表”。

当我们在 Python 中访问:

import os
print(os.environ['PATH'])

获取到的就是 系统环境变量 PATH 的值

2. 常见用法示例

访问环境变量:

import osprint(os.environ['PATH'])  # 访问 PATH 环境变量
print(os.environ.get('PYTHONPATH'))  # 安全访问,若没有返回 None

设置/修改环境变量(仅当前进程有效):

os.environ['MY_VAR'] = 'HelloWorld'
print(os.environ['MY_VAR'])  # HelloWorld

删除某个环境变量(仅当前进程有效):

del os.environ['MY_VAR']

遍历所有环境变量:

for key, value in os.environ.items():print(f"{key} = {value}")

3. os.environ 的特性

特性说明
表现为字典类型 (os._Environ)类似普通dict,但是受操作系统影响的特殊对象
只影响当前Python进程我们通过 os.environ 修改的环境变量,不会影响系统/终端/其他程序
启动时从系统环境变量中继承Python 启动时,会读取操作系统环境变量,填充 os.environ
不会写入到系统永久环境变量想要永久生效需要到操作系统环境变量中配置(如Windows环境变量配置界面)

4. os.environ 修改只对当前进程有效

例如:

import osos.environ['MY_VAR'] = 'Python'
print(os.environ['MY_VAR'])  # Python# 关闭Python后再运行 CMD: echo %MY_VAR%  -> 没有这个变量
  • 我们用 os.environ 设置的变量只存在于当前Python进程的内存空间
  • 不会反向修改操作系统全局的环境变量

5. PYTHONPATH 与 os.environ 的关系

  • 当我们设置了 系统环境变量 PYTHONPATH,Python 启动时会自动将其加入 os.environ['PYTHONPATH']

  • 我们也可以在Python代码里动态设置 PYTHONPATH:

    os.environ['PYTHONPATH'] = '/my/custom/path'
    

    但这只影响当前Python进程的 sys.path 初始化,并不会改变系统环境变量。

6. 总结一句话

os.environ 就是Python程序用来“读取与操作环境变量”的窗口。它是Python对操作系统环境变量的一个实时映射(当前进程范围内)。

http://www.xdnf.cn/news/17111.html

相关文章:

  • 基于Springboot+UniApp+Ai实现模拟面试小工具八:管理端基础功能实现
  • mybatis-plus从入门到入土(四):持久层接口之BaseMapper和选装件
  • OSPF HCIP
  • CICD--自动化部署--jinkins
  • 微服务的使用
  • SpringAI无人机智能灌溉、本地化AI推理、分析气象站、分析球场草皮系统实践
  • 【openlayers框架学习】十一:openlayers实战功能介绍与前端设计
  • 图像张量中的通道维度
  • 计算机网络:如何在实际网络中进行子网划分
  • 机器翻译入门:定义、发展简史与核心价值
  • Day23--回溯--39. 组合总和,40. 组合总和 II,131. 分割回文串
  • SQL 地理空间原理与实现
  • GLM-4.5 解读:统一推理、编码与智能体的全能王
  • PYTHON从入门到实践-18Django模版渲染
  • 电力电子技术知识总结-----PWM知识点
  • OS21.【Linux】环境变量
  • 第八章:进入Redis的SET的核心
  • adb 与pad 交互方法
  • [每周一更]-(第154期):Docker 底层深度剖析:掌控 CPU 与内存资源的艺术
  • idea中.xml文件的块注释快捷键
  • Suno的100个高质量歌词元标签(MetaTags)详解与使用指南
  • 网安-逻辑漏洞-23登陆验证
  • 文明存续的时间博弈:论地球资源枯竭临界期的技术突围与行动紧迫性
  • lua中 list.last = last 和list[last]=value区别
  • 悬挂的绳子,它的函数方程是什么样子的?
  • HiveMQ 2024.9 设计与开发文档
  • Android 之 MVVM架构
  • 大语言模型的解码策略:贪婪解码与波束搜索
  • [硬件电路-133]:模拟电路 - 信号处理电路 - 电荷放大器概述、工作原理、常见芯片、管脚定义
  • 使用ASIWebPageRequest库编写Objective-C下载器程序