Python中如何访问环境变量

Python中如何访问环境变量

技术背景

在Python开发中,环境变量的使用十分常见。环境变量可以用来存储敏感信息(如数据库密码、API密钥)、配置信息(如调试模式开关)等。通过访问环境变量,我们可以使代码更加灵活和安全。

实现步骤

1. 导入os模块

os模块是Python标准库中的一部分,提供了与操作系统进行交互的功能,包括访问环境变量。

1
import os

2. 访问单个环境变量

可以使用os.environ字典来访问环境变量。例如,访问HOME环境变量:

1
print(os.environ['HOME'])

如果键不存在,尝试访问它会引发KeyError。为了避免这种情况,可以使用os.environ.get()方法:

1
2
3
4
5
6
7
8
# 返回 `None` 如果键不存在
print(os.environ.get('KEY_THAT_MIGHT_EXIST'))

# 返回 `default_value` 如果键不存在
print(os.environ.get('KEY_THAT_MIGHT_EXIST', 'default_value'))

# 返回 `default_value` 如果键不存在
print(os.getenv('KEY_THAT_MIGHT_EXIST', 'default_value'))

3. 查看所有环境变量

可以直接打印os.environ来查看所有环境变量:

1
print(os.environ)

也可以通过循环遍历os.environ.items()来逐个打印:

1
2
for key, value in os.environ.items():
print(f'{key}: {value}')

4. 设置环境变量

可以通过os.environ字典来设置环境变量:

1
os.environ['HOME'] = '/new/value'

5. 检查环境变量是否存在

可以使用in关键字来检查环境变量是否存在:

1
'HOME' in os.environ

核心代码

访问单个环境变量

1
2
3
4
5
import os
# 直接访问
print(os.environ['HOME'])
# 安全访问
print(os.environ.get('HOME'))

查看所有环境变量

1
2
3
import os
for key, value in os.environ.items():
print(f'{key}: {value}')

设置环境变量

1
2
import os
os.environ['MYVAR'] = 'x'

检查环境变量是否存在

1
2
3
import os
if 'HOME' in os.environ:
print('HOME环境变量存在')

最佳实践

使用第三方库

envparse

在生产环境的Web应用中,可以使用envparse库来读取环境变量并转换为指定类型:

1
2
3
4
5
from envparse import env
# 将 WHITE_LIST=hello,world,hi 读取为列表
white_list = env.list("WHITE_LIST", default=[])
# 读取布尔值
DEBUG = env.bool("DEBUG", default=False)

python-decouple

python-decouple库可以方便地从环境变量或.env文件中读取配置:

1
2
from decouple import config
SECRET_KEY = config('SECRET_KEY')

python-dotenv

python-dotenv库可以加载.env文件中的环境变量:

1
2
3
4
5
6
7
8
import os
from dotenv import load_dotenv

# 加载环境变量
load_dotenv()

# 访问环境变量
print(os.getenv("BASE_URL"))

性能优化

直接访问os.environ可能会有性能开销,建议将其转换为字典:

1
2
3
4
5
6
7
8
from os import environ

# 较慢
print(environ["USER"], environ["NAME"])

# 较快
env_dict = dict(environ)
print(env_dict["USER"], env_dict["NAME"])

常见问题

键不存在引发KeyError

如前所述,直接访问不存在的键会引发KeyError,可以使用os.environ.get()os.getenv()方法来避免。

环境变量未生效

如果在代码中设置了环境变量,但后续代码没有生效,可能是因为环境变量的作用域问题。在Python中,通过os.environ设置的环境变量只对当前Python进程及其子进程有效。

性能问题

如果需要频繁访问环境变量,直接访问os.environ可能会影响性能。可以将os.environ转换为字典,减少重复调用。


Python中如何访问环境变量
https://119291.xyz/posts/2025-05-09.python-access-environment-variables/
作者
ww
发布于
2025年5月9日
许可协议