Python 系统环境变量 (os.environ)

博客主要介绍了在Python中设置和获取系统环境变量的相关内容。分别阐述了Python 2和Python 3的不同情况,如Python 2中环境映射的捕获、修改及删除环境变量的操作,以及Python 3在Unix系统上键值的错误处理等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Python 系统环境变量 {os.environ}

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import os

print(os.environ['HOME'])
print(os.environ['USER'])
print(os.environ['SHELL'])
print(os.environ['LANGUAGE'])
print(os.environ['SSH_AUTH_SOCK'])
print(os.environ.keys())
/usr/bin/python2.7
/home/strong
strong
/bin/bash
en_US
/run/user/1000/keyring/ssh
['PYTHONIOENCODING', 'QT_QPA_PLATFORMTHEME', 'XDG_VTNR', 'XDG_GREETER_DATA_DIR', 'QT4_IM_MODULE', 'LC_IDENTIFICATION', 'UPSTART_EVENTS', 'XDG_CURRENT_DESKTOP', 'UNITY_HAS_3D_SUPPORT', 'XDG_SESSION_TYPE', 'QT_IM_MODULE', 'LOGNAME', 'PYCHARM_HOSTED', 'GNOME_KEYRING_PID', 'GNOME_KEYRING_CONTROL', 'LC_PAPER', 'PATH', 'PYTHONUNBUFFERED', 'LD_LIBRARY_PATH', 'XDG_SESSION_DESKTOP', 'SHELL', 'XDG_SESSION_PATH', 'XAUTHORITY', 'LANGUAGE', 'SESSION_MANAGER', 'LC_MEASUREMENT', 'QT_LINUX_ACCESSIBILITY_ALWAYS_ON', 'NLSPATH', 'MANDATORY_PATH', 'CLUTTER_IM_MODULE', 'UNITY_DEFAULT_PROFILE', 'DISPLAY', 'GNOME_DESKTOP_SESSION_ID', 'JOB', 'SESSION', 'UPSTART_INSTANCE', 'SESSIONTYPE', 'XMODIFIERS', 'GIO_LAUNCHED_DESKTOP_FILE_PID', 'GPG_AGENT_INFO', 'HOME', 'LC_MONETARY', 'GTK2_MODULES', 'LANG', 'SHLVL', 'GIO_LAUNCHED_DESKTOP_FILE', 'XDG_RUNTIME_DIR', 'INSTANCE', 'LC_ADDRESS', 'PYTHONPATH', 'COMPIZ_CONFIG_PROFILE', 'COMPIZ_BIN_PATH', 'SSH_AUTH_SOCK', 'GDMSESSION', 'IM_CONFIG_PHASE', 'UPSTART_JOB', 'QT_ACCESSIBILITY', 'XDG_SEAT_PATH', 'LC_NUMERIC', 'XDG_SESSION_ID', 'DBUS_SESSION_BUS_ADDRESS', 'GTK_MODULES', 'GTK_IM_MODULE', 'DESKTOP_SESSION', 'UPSTART_SESSION', 'XDG_CONFIG_DIRS', 'DEFAULTS_PATH', 'XDG_SEAT', 'LC_NAME', 'GDM_LANG', 'LC_TELEPHONE', 'PAPERSIZE', 'XDG_DATA_DIRS', 'PWD', 'XFILESEARCHPATH', 'XDG_MENU_PREFIX', 'LC_TIME', 'USER']

Process finished with exit code 0

设置系统环境变量

os.environ['环境变量名称']='环境变量值'

获取系统环境变量

os.environ['环境变量名称']

其中 keyvalue 均为 string 类型

1. Python 2 os.environ

os.environ

A mapping object representing the string environment. For example, environ['HOME'] is the pathname of your home directory (on some platforms), and is equivalent to getenv("HOME") in C.
一个表示字符串环境的 mapping 对象。例如,environ['HOME'] 是你的主目录 (在某些平台上) 的路径名,相当于 C 中的 getenv("HOME")

This mapping is captured the first time the os module is imported, typically during Python startup as part of processing site.py. Changes to the environment made after this time are not reflected in os.environ, except for changes made by modifying os.environ directly.
这个映射是在第一次导入 os 模块时捕获的,通常作为 Python 启动时处理 site.py 的一部分。除了通过直接修改 os.environ 之外,在此之后对环境所做的更改不会反映在 os.environ 中。

If the platform supports the putenv() function, this mapping may be used to modify the environment as well as query the environment. putenv() will be called automatically when the mapping is modified.
如果平台支持 putenv() 函数,这个映射除了可以用于查询环境外还能用于修改环境。当这个映射被修改时,putenv() 将被自动调用。

Note Calling putenv() directly does not change os.environ, so it’s better to modify os.environ.
直接调用 putenv() 并不会影响 os.environ,所以推荐直接修改 os.environ

Note On some platforms, including FreeBSD and Mac OS X, setting environ may cause memory leaks. Refer to the system documentation for putenv().
在某些平台上,包括 FreeBSD 和 Mac OS X,设置 environ 可能导致内存泄露。参阅 putenv() 的系统文档。

If putenv() is not provided, a modified copy of this mapping may be passed to the appropriate process-creation functions to cause child processes to use a modified environment.
如果平台没有提供 putenv(), 为了使启动的子进程使用修改后的环境,一份修改后的映射会被传给合适的进程创建函数。

If the platform supports the unsetenv() function, you can delete items in this mapping to unset environment variables. unsetenv() will be called automatically when an item is deleted from os.environ, and when one of the pop() or clear() methods is called.
如果平台支持 unsetenv() 函数,你可以通过删除映射中元素的方式来删除对应的环境变量。当一个元素被从 os.environ 删除时,以及 pop()clear() 被调用时,unsetenv() 会被自动调用。

2. Python 3 os.environ

Python 2 os.environ
+
On Unix, keys and values use sys.getfilesystemencoding() and 'surrogateescape' error handler. Use environb if you would like to use a different encoding.
在 Unix 系统上,键和值会使用 sys.getfilesystemencoding()'surrogateescape' 的错误处理。如果你想使用其他的编码,使用 environb

References

[1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

### 如何在Python脚本中使用 `os.environ` 设置和获取环境变量 #### 获取环境变量 为了访问操作系统中的环境变量,可以通过 `os.environ` 字典对象实现。例如,要读取名为 `TNT_SERVER_URL` 的环境变量: ```python import os server_url = os.environ.get("TNT_SERVER_URL") if server_url is None: print("Environment variable TNT_SERVER_URL not found.") else: print(f"TNT_SERVER_URL={server_url}") ``` 这段代码尝试从环境中检索指定名称的变量;如果不存在,则返回 `None` 并打印提示信息[^1]。 #### 设置环境变量 需要注意的是,在 Python 脚本内部通过 `os.environ` 修改或新增环境变量仅对该进程及其子进程中有效,并不会影响全局系统级别的环境配置。下面是如何临时设置一个新的环境变量的例子: ```python import os # 添加新的环境变量 os.environ["MY_TEMP_VAR"] = "temporary_value" print(os.environ["MY_TEMP_VAR"]) # 输出: temporary_value ``` 对于 Windows 用户来说,若希望永久保存更改后的环境变量值,还需要借助系统的控制面板或其他工具完成相应操作[^2]。 另外值得注意的一点是在 Linux 上有时即使已经设置了某些自定义环境变量也无法被 `os.environ` 正确识别出来。这可能是由于这些变量只存在于用户的 shell 配置文件(如 `.bashrc`)里而未加载至当前会话所致。针对这种情况的一个解决方案就是把它们加入到 `/etc/profile` 文件当中去并重新启动计算机让变动生效[^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yongqiang Cheng

梦想不是浮躁,而是沉淀和积累。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值