在调用模型服务时需要配置对应平台的API Key,但直接将API Key硬编码在代码中是个非常危险且不推荐的行为!!!
因此关于Python项目中API Key的几种导入方法,简单归个类👇
(Windows11)
系统环境变量 (System Environment Variables)
- 终端命令
# cmd(需要管理员权限)
setx XXX_API_KEY "your_api_key_here" /M
# powershell(需要管理员权限)
[Environment]::SetEnvironmentVariable("XXX_API_KEY", "your_api_key_here", "Machine")
- Win+S搜索->编辑系统环境变量->手动添加变量&值
- 变量:XXX_API_KEY
- 值:your_api_key_here
特点:
- 管理员权限
- 全局生效(适用于所有用户)
- 重启终端后生效
- 适合生产环境或服务器部署
用户环境变量 (User Environment Variables)
- 终端命令
# cmd(无需管理员权限)
setx XXX_API_KEY "your_api_key_here"
# powershell(无需管理员权限)
[Environment]::SetEnvironmentVariable("XXX_API_KEY", "your_api_key_here", "User")
- 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加载环境变量时,变量的生效优先级如下:(从高到低)
- 系统环境变量 (最高优先级)
- 用户环境变量
env文件中的变量- 默认值
即:进程总是取用当前环境中已存在的最高优先级的那个值。
💡需要注意:
python-dotenv的作用是将.env文件中的变量注入到当前 Python 进程的环境中,这个注入的环境并不会覆盖系统或用户环境变量。
例如:
某个变量(如XXX_API_KEY)已经在系统的环境变量中定义了,那么python-dotenv从文件读取到的同名值会被忽略。
