Python os.environ 对象 和 os.getenv() 方法

os.environ

在 Python 中 os.environ 是一个用户环境变量的映射对象(mapping object)。它返回的是一个 Python 字典(dictionary) ,其中用户的环境变量作为键(key),其值作为值(value)。由于 os.environ 是一个Python字典,所以可以执行字典的 getset

注意,虽然可以修改 os.environ ,但是 任何 os.environ 修改只在当前进程有效,而不会持久化生效

  • 获取环境变量的代码片段案例:

打印输出操作系统 所有 环境变量
# Python program to explain os.environ object

# importing os module
import os
import pprint

# Get the list of user's
# environment variables
env_var = os.environ

# Print the list of user's
# environment variables
print("User's Environment variable:")
pprint.pprint(dict(env_var), width = 1)

环境变量获取空 null 问题

我在实践 PyODPS快速起步 遇到一个小白问题,运行 odps 测试程序报,调试发现并没有获得指定环境变量,原因就是在使用 os.environ 或者 os.getenv() ,一定要明确配置 export 指定环境变量,否则即使登陆 Bash 看上去环境变量生效,实际 Python程序运行还是拿不到环境变量:

ODPS相关环境变量设置
ALIBABA_CLOUD_ACCESS_KEY_ID="my_id"
ALIBABA_CLOUD_ACCESS_KEY_SECRET="my_secret"

# 必须明确 export 环境变量,否则Python os模块的 getenv() 或 environ 无法获得
export ALIBABA_CLOUD_ACCESS_KEY_ID ALIBABA_CLOUD_ACCESS_KEY_SECRET

原因说来很简单,一定要确保 ~/.bash_profile 中输出的环境变量使用了 export 指令明确输出,否则 os.environ 对象 或者 os.getenv() 方法返回的就是空值

参考