理解与使用 python-dotenv 加载配置文件

python load_dotenv 库作用和使用

备忘

通过对环境变量的调用和使用,确实能够简化开发环境的配置。

比如说在项目中可能会多次要使用到一些参数,我们可以把这些参数写入到配置文件中。

配置文件字符引号

配置文件中使用的字符不需要使用引号。

我们可以定义参数和参数值为下面的这种方式:

TOPICNAME_ZCHUB_POLICY=zchub_policy_queue
TOPICNAME_ZCHUB_DISCOURSE_SYNCHRONIZE=zchub_discourse_synchronize_queue

你可以使用单词export作为每行的前缀,这将会使python-dotenv 忽略该变量,但是你可以使用 source 命令运行该文件。

python-dotenv 可以用来修改 POSIX系统的环境变量.

变量的值是下面列表中定义的第一个值:

系统环境变量

  • .env 文件中定义的值
  • 默认值,如果有的话
  • 空字符串
    确保引用其他变量时用大括号{}包围,就像${HOME},因为像$HOME这样的字符串不会被认为是变量的引用。

`

CONFIG_PATH=${HOME}/.config/foo
DOMAIN=example.org
EMAIL=admin@${DOMAIN}
DEBUG=${DEBUG:-false}

变量转义符

是可以在变量中使用转义符的。

  • 在单引号中可以使用的变量: \\, \'
  • 在双引号中可以使用的变量: \\, \', \", \a, \b, \f, \n, \r, \t, \v

python-dotenv 是一个用于从 .env 文件加载环境变量的 Python 库。 .env 文件是一个简单的文本文件,包含键值对,用于定义软件项目的配置信息,如数据库连接信息、API 密钥等。这种方法可以帮助开发人员在项目开发过程中轻松管理配置信息,而无需将配置信息硬编码到代码库中。

作用

  • 分离配置文件和代码: 通过将配置信息存储在 .env 文件中,可以将配置与代码隔离,以更安全、灵活地管理配置信息。
  • 自动加载环境变量: 在启动应用程序时,python-dotenv 可以自动将 .env 文件中的变量加载为环境变量,使这些变量在代码执行时可用。
  • 提高安全性: 可以将敏感信息(如 API 密钥、数据库密码等)存储在 .env 文件中,并在项目中将该文件添加到 .gitignore,以避免在版本控制系统中泄漏这些信息。

使用方法

  1. 安装 python-dotenv:

    使用 pip 安装:

    pip install python-dotenv
    
  2. 创建 .env 文件:

    在项目的根目录中创建一个 .env 文件,并将你的配置信息写入其中,例如:

    DATABASE_URL=postgresql://user:password@localhost:5432/mydatabase
    SECRET_KEY=mysecretkey
    
  3. 在 Python 代码中加载 .env 文件:

    from dotenv import load_dotenv
    import os
    
    # 加载 .env 文件
    load_dotenv()
    
    # 现在可以通过环境变量访问
    database_url = os.getenv('DATABASE_URL')
    secret_key = os.getenv('SECRET_KEY')
    
    print(f"Database URL: {database_url}")
    print(f"Secret Key: {secret_key}")
    

通过 load_dotenv() 函数,你可以确保 .env 中的变量自动加载为环境变量,然后通过 os.getenv() 访问这些变量。

这样,你的应用程序可以轻松配置不同的环境(开发、测试、生产)而无需更改代码。