当我们开发 Python 项目时,往往需要在代码中使用一些隐私数据,例如 API 密钥、数据库密码等等。为了将这些隐私数据与代码分离,避免泄露风险,我们可以将这些数据存储在环境变量中,并在代码中读取这些环境变量。在 Python 中,可以使用
当我们开发 Python 项目时,往往需要在代码中使用一些隐私数据,例如 API 密钥、数据库密码等等。为了将这些隐私数据与代码分离,避免泄露风险,我们可以将这些数据存储在环境变量中,并在代码中读取这些环境变量。在 Python 中,可以使用 environs 库来方便地读取和使用环境变量。
以下是使用 environs 库定义环境变量的详细攻略:
1. 安装 environs 库
可以使用 pip 来安装 environs 库:
pip install environs
2. 引入 environs 库并定义环境变量
在 Python 代码中引入 environs 库,并定义需要使用的环境变量,例如:
import environs
env = environs.Env()
# 定义 API_KEY 环境变量,默认为空字符串
env.str('API_KEY', default='')
在上述代码中,我们首先引入了 environs 库,并创建了一个 env 对象。然后通过该对象的 str()
方法,定义了一个名为 API_KEY 的字符串类型的环境变量,并设置了默认值为空字符串。
除了 str()
方法,还有一些其他方法也可以用来定义环境变量,例如:
bool()
:定义布尔类型的环境变量int()
:定义整数类型的环境变量float()
:定义浮点数类型的环境变量list()
:定义列表类型的环境变量
3. 读取环境变量并在代码中使用
使用 environs 定义环境变量后,我们可以通过以下方式在代码中读取这些环境变量:
api_key = env.str('API_KEY')
在上述代码中,我们使用 env.str()
方法来读取名为 API_KEY 的环境变量,并将其赋值给了变量 api_key
。
它还有以下几种使用方法:
api_key = env('API_KEY') # 可以简写为这样
api_key = env.str('API_KEY', 'default_value') # 传入默认值参数
api_key = env.bool('API_KEY', False) # 传入默认值参数
api_key = env.int('API_KEY', 0) # 传入默认值参数
api_key = env.float('API_KEY', 0.0) # 传入默认值参数
api_key_list = env.list('API_KEY_LIST', ["default_value1", "default_value2"]) # 传入默认值参数,定义为列表类型
4. 示例说明
在下面的示例中,我们使用 environs 定义了两个环境变量,一个是名为 API_KEY 的字符串类型环境变量,另一个是名为 PORT 的整数类型环境变量,并在代码中读取这些环境变量:
import environs
env = environs.Env()
# 定义 API_KEY 环境变量,默认为空字符串
env.str('API_KEY', default='')
# 定义 PORT 环境变量,默认为 8080
env.int('PORT', default=8080)
# 读取 API_KEY 和 PORT 环境变量,并在代码中使用
api_key = env.str('API_KEY')
port = env.int('PORT')
print('API_KEY:', api_key)
print('PORT:', port)
输出结果:
API_KEY: xxxxxxxx
PORT: 8000
另外一个示例:
import environs
env = environs.Env()
env.read_env() # 从.env文件中读取环境变量
pg_username = env.str('PG_USERNAME')
pg_password = env.str('PG_PASSWORD')
print(pg_username, pg_password)
在这个示例中,我们使用 env.read_env()
方法从 .env
文件中读取环境变量,而不是从操作系统的环境变量中读取。
需要注意的是,如果我们在 .env
文件中定义了同名的环境变量,并且与操作系统环境变量不同,则 environs 优先使用 .env
文件中的值。
本文标题为:Python 使用 environs 库定义环境变量的方法


- python中如何让输出不换行 2023-07-27
- Oracle Table Demo语句应用介绍 2024-01-19
- mysql事务和隔离级别底层原理浅析 2023-08-12
- MySQL函数date_format()日期格式转换的实现 2022-09-01
- PostgreSql生产级别数据库安装要注意事项 2023-07-21
- redismyadmin安装(支持redis4 集群模式) 2023-09-13
- LogStash启动报错:<Redis::CommandError: ERR unknown command 'script'>与batch_count 的 配置 2023-09-13
- Oracle ORA-00904:标识符无效解决方法(太坑了!!) 2023-07-23
- Mybatis与Hibernate的区别 2023-12-21
- 解读SQL一些语句执行后出现异常不会回滚的问题 2023-07-29