dotenv

  1. 安装和使用 dotenv:首先,
    使用 pip install python-dotenv 或者 uv add python-dotenv 安装库,
    并创建 .env 文件,存储用户名和密码等敏感信息。
  2. .env 文件规则:
    • 使用键值对格式。
    • 支持注释。
    • 值包含空格时,需用引号包裹。
    • 使用 .gitignore 文件忽略 .env,避免敏感信息泄露。
  3. 加载 .env 文件并使用:
    • 使用 load_dotenv() 函数加载 .env 文件,将变量存入 os.environ 环境中。
    • 通过 os.getenv() 访问环境变量。以下是代码示例:
from dotenv import load_dotenv
import os

# 加载 .env 文件
load_dotenv(override=True)

# 读取环境变量
user_name = os.getenv('MY_USERNAME')
user_password = os.getenv('MY_PASSWORD')

print(user_name)
print(user_password)
  1. 管理多个环境配置:通过不同的 .env 文件(如 .env.development, .env.testing, .env.production)管理开发、测试和生产环境的配置。示例代码如下:
import os
from dotenv import load_dotenv

# 获取当前环境,默认为开发环境
environment = os.getenv('ENVIRONMENT', 'development')

# 加载对应环境的 .env 文件
env_file = f'.env.{environment}'
load_dotenv(env_file)

# 读取环境变量
db_user = os.getenv('DB_USER')
db_password = os.getenv('DB_PASS')
debug = os.getenv('DEBUG')

print(f'Environment: {environment}')
print(f'DB_USER: {db_user}')
print(f'DB_PASS: {db_password}')
print(f'DEBUG: {debug}')
  1. 切换环境:通过命令窗口(如 PowerShell, cmd, bash)设置 ENVIRONMENT 变量,演示如何根据不同环境加载配置。

    使用 dotenv 库能够在团队协作和复杂项目中有效管理敏感信息,确保配置隔离,既安全又灵活。

    终端写入环境变量

使用PowerShell  
$env:ENVIRONMENT="development"
使用cmd  
set ENVIRONMENT=development
使用bash
export ENVIRONMENT=development

可以使用以下命令测试是否设置成功

$ echo $ENVIRONMENT
development

6.写一个加载环境变量的工具文件

6.1 项目根项目下新建文件 .env.development
注意:
这里的 .development ,环境变量也要设置为 development ,文件和环境变量里的值要对应上,否则找不到配置文件

写入以下内容

MY_USERNAME="development_your_username"
MY_PASSWORD= "development_your_password"

6.2 项目根项目下新建文件 util_env.py

写入以下内容

import os

from dotenv import load_dotenv

# 获取当前环境,默认为开发环境
environment = os.getenv('ENVIRONMENT', 'development')

# 加载对应环境的 .env 文件
env_file = f'.env.{environment}'
load_dotenv(env_file,override=True)

# 获取当前环境,默认为开发环境
environment = os.getenv('ENVIRONMENT', 'development')

MY_USERNAME = os.getenv("MY_USERNAME")
MY_PASSWORD = os.getenv("MY_PASSWORD")

6.3 使用 git-bash.exe 设置环境变量

方法一:

使用bash
export ENVIRONMENT=development

方法二:使用脚本 setenv.sh

项目根目录下新建脚本文件 setenv.sh

#!/bin/bash
# set environment  development or production

# 1. 使用 source 命令运行脚本 dev 或 prod
# source ./setenv.sh dev 
# source ./setenv.sh prod 

# 2. 验证环境变量 :  
# echo $ENVIRONMENT

# 检查参数
if [ "$1" = "dev" ] || [ "$1" = "development" ]; then
    export ENVIRONMENT=development
    echo "环境已设置为: development"
elif [ "$1" = "prod" ] || [ "$1" = "production" ]; then
    export ENVIRONMENT=production
    echo "环境已设置为: production"
else
    echo "用法: source ./setenv.sh [dev|prod]"
    echo "当前环境: $ENVIRONMENT"
    return 1
fi

# 显示当前环境
echo "当前环境变量: $ENVIRONMENT"

git-bash.exe 终端执行命令 source ./setenv.sh dev

Administrator@WIN-20240929XKQ MINGW64 /d/code/pyton/uv_demo (master)
$ source ./setenv.sh dev
环境已设置为: development
当前环境变量: development

Administrator@WIN-20240929XKQ MINGW64 /d/code/pyton/uv_demo (master)
$ echo $ENVIRONMENT
development

6.4 main.py 中使用环境变量

from util_env import MY_PASSWORD


def main():
    name = "uv-demo"
    print("\n")
    print(f"Hello from {name}!\n")
    print(f"Hello from {name}!\n")
    password = MY_PASSWORD
    print(f"MY_PASSWORD: {password}!\n")


if __name__ == "__main__":
    main()

至此就可以使用 util_env.py 中的文件了

参考笔记
https://cyberhongtu.com/2024/09/07/python5%e5%88%86%e9%92%9f-10-%e4%bd%bf%e7%94%a8dotenv%e5%ba%93%e7%ae%a1%e7%90%86%e6%95%8f%e6%84%9f%e4%bf%a1%e6%81%af/

视频教程
https://www.bilibili.com/video/BV1oYphecETh?spm_id_from=333.788.videopod.sections&vd_source=a68414cd60fe26e829ce1cdd4d75a9e6