当我们开发 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 库定义环境变量的方法
基础教程推荐
- 关于数据库优化问题收集汇总 2023-12-06
- MariaDB10.5.6的安装与使用详解 2023-07-24
- 公网远程访问局域网SQL Server数据库 2023-07-29
- MySQL索引最左匹配原则实例详解 2022-10-23
- 一文带你理解慢SQL分析与优化 2022-09-02
- MongoDB数据库索引用法详解 2023-07-16
- MySQL数据库JDBC编程详解流程 2023-12-29
- MySQL之JSON类型字段的使用技巧分享 2022-10-23
- MySQL中的用户创建与权限管理 2022-10-23
- mysql_free_result怎么用 2022-09-14