在调用模型服务时需要配置对应平台的API Key,但直接将API Key硬编码在代码中是个非常危险且不推荐的行为!!!

因此关于Python项目中API Key的几种导入方法,简单归个类👇
(Windows11)

系统环境变量 (System Environment Variables)

  1. 终端命令
# cmd(需要管理员权限)
setx XXX_API_KEY "your_api_key_here" /M

# powershell(需要管理员权限)
[Environment]::SetEnvironmentVariable("XXX_API_KEY", "your_api_key_here", "Machine")
  1. Win+S搜索->编辑系统环境变量->手动添加变量&值
  • 变量:XXX_API_KEY
  • 值:your_api_key_here

特点:

  • 管理员权限
  • 全局生效(适用于所有用户)
  • 重启终端后生效
  • 适合生产环境或服务器部署

用户环境变量 (User Environment Variables)

  1. 终端命令
# cmd(无需管理员权限)
setx XXX_API_KEY "your_api_key_here"

# powershell(无需管理员权限)
[Environment]::SetEnvironmentVariable("XXX_API_KEY", "your_api_key_here", "User")
  1. Win+S搜索->编辑账户的环境变量->手动添加变量&值
  • 变量:XXX_API_KEY
  • 值:your_api_key_here

特点:

  • 无需管理员权限
  • 只对当前用户生效
  • 重启终端后生效
  • 适合个人开发环境

会话环境变量 (Session Environment Variables)

终端命令

# cmd
set XXX_API_KEY=your_api_key_here

# powershell
$env:XXX_API_KEY="your_api_key_here"

特点:

  • 只在当前终端会话中有效
  • 关闭终端后失效
  • 无需重启终端,立即生效
  • 适合临时测试

.env 文件

项目根目录下创建名为.env的文件

XXX_API_KEY=your_api_key_here

特点:

  • 无需管理员权限
  • 项目级别隔离,不同项目可独立管理密钥
  • 支持多环境配置(如.env.local, .env.production等)
  • 通常被.gitignore排除,安全性好

环境变量优先级(Python-dotenv)

当使用python-dotenv加载环境变量时,变量的生效优先级如下:(从高到低)

  1. 系统环境变量 (最高优先级)
  2. 用户环境变量
  3. env文件中的变量
  4. 默认值

即:进程总是取用当前环境中已存在的最高优先级的那个值。

💡需要注意:
python-dotenv的作用是将.env文件中的变量注入到当前 Python 进程的环境中,这个注入的环境并不会覆盖系统或用户环境变量。
例如:
某个变量(如 XXX_API_KEY)已经在系统的环境变量中定义了,那么python-dotenv从文件读取到的同名值会被忽略。