什么是os.environ
基本概念
os.environ 是 Python 中 os 模块提供的一个字典对象,它代表了操作系统的环境变量。环境变量是由操作系统定义的,它们存储了影响程序运行的配置信息,例如系统路径、用户信息、系统语言等。
os.environ 允许你访问、修改、删除和添加环境变量。也就是说他是环境变量里面的信息 包含系统变量和用户变量

存储方式
os.environ 是一个字典对象,具有以下特点:
- 键(key)是环境变量的名称(字符串)。
- 值(value)是环境变量的值(通常是字符串)。
举例
-
环境变量 PATH 存储了操作系统的可执行文件搜索路径,
-
环境变量HOME 存储了当前用户的主目录路径。
代码演示
py
import os
# 获取环境变量
print(os.environ['PATH']) # 输出系统的 PATH 环境变量内容
# 获取当前用户的主目录
#print(os.environ['HOME']) # 输出用户主目录路径 (在 Linux/Unix 系统上)
# 获取所有环境变量
print(os.environ)

下面是Path里面的内容

常见操作
获取环境变量 推荐第二种方式
py
import os
# 获取环境变量 PATH 的值
path = os.environ['PATH']
print(path)
# 如果环境变量不存在,KeyError 会被抛出
# 但可以使用 .get() 方法避免 KeyError
home = os.environ.get('HOME')
print(home)
- os.environ'VAR_NAME' 会直接获取指定的环境变量值,如果该环境变量不存在,则会抛出 KeyError。
- os.environ.get('VAR_NAME') 会尝试获取环境变量值,如果该环境变量不存在,则返回 None,而不是抛出异常
设置环境变量
py
import os
# 设置新的环境变量
os.environ['Path'] = 'value123'
# 查看设置的环境变量
print(os.environ['Path'])
请注意,这种更改仅对当前 Python 程序有效,在程序结束后环境变量的修改会丢失。

删除环境变量
可以使用 del 删除某个环境变量:
py
import os
# 删除环境变量
del os.environ['MY_VAR']
这会删除名为 MY_VAR 的环境变量。如果该变量不存在,则会抛出 KeyError。也是仅仅对当前程序有效。
修改环境变量
如果你希望修改现有环境变量,可以直接使用赋值语句。例如,修改 PATH 环境变量,添加一个新的路径:
py
import os
# 获取当前 PATH 环境变量
path = os.environ['PATH']
# 添加新的路径
new_path = '/my/custom/path:' + path
os.environ['PATH'] = new_path
# 打印修改后的 PATH
print(os.environ['PATH'])
总结
| 设置方式 | 是否永久 | 生效范围 |
|---|---|---|
os.environ['PATH'] = ... |
❌ 临时 | 仅当前 Python 进程 |
| Windows 系统设置 | ✅ 永久 | 所有程序 |
.bashrc/.profile |
✅ 永久 | 所有终端会话 |
例子说明
python
import os
# 获取原始 PATH
original_path = os.environ['PATH']
# 修改 PATH(添加新路径)
os.environ['PATH'] = '/my/custom/path:' + original_path
# 程序运行期间,PATH 包含新路径
print(os.environ['PATH']) # 包含 /my/custom/path
# 程序结束后,系统的 PATH 恢复原样,没有变化
总结:Python 代码中的环境变量修改都是临时的,不会影响操作系统的永久设置。
4. 实际应用场景
4.1 与系统交互
有时,你需要在 Python 中与操作系统交互,例如查找可执行文件的路径,或设置程序需要的环境变量。这时,os.environ 非常有用。
py
import os
# 获取操作系统的语言环境设置
language = os.environ.get('LANG')
print(f"System language: {language}")
4.2 跨平台应用
在跨平台应用开发中,环境变量常常被用来为不同的操作系统提供不同的配置信息。
例如,Windows 和 Linux 系统之间可能需要不同的文件路径或库位置。
py
import os
if os.name == 'nt': # Windows 系统
os.environ['MY_PATH'] = 'C:\\Program Files\\MyApp'
elif os.name == 'posix': # 类 Unix 系统 (Linux/macOS)
os.environ['MY_PATH'] = '/usr/local/MyApp'
4.3 通过环境变量传递敏感信息
在很多应用中,尤其是生产环境中,敏感信息(如 API 密钥、数据库密码等)不应该硬编码在代码中,而是应该存储在环境变量中。这可以防止信息泄露,并提高安全性。
例如,可以将数据库密码存储在环境变量中,而不是在代码中硬编码:
bash
export DB_PASSWORD='mysecretpassword'
然后在 Python 中使用 os.environ 获取:
py
import os
db_password = os.environ.get('DB_PASSWORD')
print(f"Database password: {db_password}")
5. 注意事项
- 环境变量的生命周期 :
os.environ只会影响当前进程及其子进程。如果你启动一个新的终端会话,环境变量的变化不会被保留。要永久改变环境变量,你需要在操作系统级别设置它们(例如,在.bashrc或.bash_profile文件中设置环境变量)。 - 大小写敏感性 :在大多数操作系统中,环境变量名是大小写敏感的,尤其是在类 Unix 系统(如 Linux 和 macOS)中。例如,
PATH和path是两个不同的环境变量。 - 性能问题 :虽然
os.environ是一个字典对象,但它是一个实时加载的环境变量表。如果频繁访问大量环境变量,可能会引起性能问题,因此应尽量避免不必要的重复查询。
6. 总结
os.environ 提供了访问和修改操作系统环境变量的强大功能。
在 Python 中使用它可以帮助你配置应用、管理敏感信息,并与操作系统进行交互。
需要注意的是,对环境变量的修改仅对当前 Python 进程有效,程序退出后修改将丢失。
如果需要跨进程或跨会话保持这些修改,可以在操作系统中配置永久的环境变量。