📌 核心结论(TL;DR)
红线警告:千万不要把 API Key 硬编码(直接写死)在代码里!一旦代码上传到 GitHub/Gitee,密钥会被黑客秒级扫描盗刷,产生巨额账单。
系统级方案:将 Key 配置到操作系统的环境变量中,Python 通过
os.getenv()动态读取,实现代码与敏感数据解耦。企业级方案(最推荐):在项目根目录使用
.env文件管理环境变量,结合python-dotenv库加载,既安全又方便多环境切换。
🔍 一、 为什么绝对不能“硬编码”?
在初学大模型开发时,为了图方便,我们往往会写出这样的代码:
# ❌ 极其危险的做法 model = ChatOpenAI( model="deepseek-chat", api_key="sk-9ff4c2xxxxxxxxxxxxx", base_url="https://api.deepseek.com", )风险:如果你使用 Git 将这段代码推送到开源仓库(即使后来删除并重新提交,Git 的历史记录里依然能查到),自动化的爬虫机器人会在几秒钟内抓取到你的 Key,并在你的账户额度耗尽前疯狂调用。在真实的企业开发中,泄露密钥属于严重的生产事故。
💻 二、 方案一:配置 Windows 系统环境变量
这是最基础的隔离方式。
1. 配置步骤
按下
Win + R,输入sysdm.cpl回车,打开“系统属性”。点击“高级”选项卡 -> 点击“环境变量”。
在“用户变量”区域,点击“新建”:
变量名:
DEEPSEEK_API_KEY(建议全大写,用下划线分隔)变量值:
sk-你的真实key
点击确定保存。
2. Python 代码读取
import os from langchain_openai import ChatOpenAI # 从系统环境变量中读取 api_key = os.getenv("DEEPSEEK_API_KEY") model = ChatOpenAI( model="deepseek-chat", api_key=api_key, base_url="https://api.deepseek.com", )💻 三、 方案二:使用.env文件(🌟 强烈推荐)
当项目需要连接 OpenAI、DeepSeek、阿里等多个模型,或者需要配置数据库密码时,全塞进系统环境变量会非常混乱。.env文件是业界标准的最佳实践。
1. 安装依赖
pip install python-dotenv2. 创建.env文件
在项目根目录下,新建一个名为.env的文件(没有后缀名),填入:
DEEPSEEK_API_KEY=sk-你的真实key3. 代码中加载
import os from dotenv import load_dotenv from langchain_openai import ChatOpenAI # 加载 .env 文件到系统环境变量中 load_dotenv() api_key = os.getenv("DEEPSEEK_API_KEY") model = ChatOpenAI( model="deepseek-chat", api_key=api_key, base_url="https://api.deepseek.com", )4. 别忘了忽略它!
既然用了.env,就千万不能把它提交到 Git 仓库。务必在你的.gitignore文件中加上这行:
.env⚠️ 四、 踩坑排查排雷
环境变量配置完,代码依然报错
api_key is None:原因:你配置完系统环境变量或修改了
.env文件后,没有重启 IDE。排查:系统环境变量不会实时同步到已经打开的进程中。务必彻底关闭 PyCharm/VS Code,然后重新打开,或者在修改系统变量后重启电脑。
报错
ImportError: cannot import name 'load_dotenv':原因:没安装库,或者装错了地方。
排查:确保在当前激活的虚拟环境(
.venv)中执行了pip install python-dotenv。
.env文件失效:原因:
load_dotenv()默认从当前运行脚本的目录寻找.env文件。如果你的脚本运行目录和.env不在同一级,就会找不到。排查:确保
.env文件在你的项目根目录下,且运行配置的工作目录(Working Directory)是项目根目录。