根本原因是未显式调用load_dotenv(),python默认不自动加载.env文件;必须在入口文件顶部立即执行from dotenv import load_dotenv; load_dotenv(),并确保路径正确、语法合规(如hunyuan_api_key="sk-xxx"),否则os.getenv()始终返回none。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

腾讯混元API Key明明已写进项目根目录的.env文件,但Python脚本运行时仍报错“API key not found”,说明环境变量根本没加载进当前进程,这不是密钥写错了,而是加载机制失效了。
确认 .env 文件是否被 Python 主动读取
Python 默认完全无视 .env 文件——它只是个普通文本,不会自动变成环境变量。你必须显式调用 python-dotenv 加载它。
执行 pip install python-dotenv 安装依赖。
在程序最开头(必须是 import 语句之前或紧随其后)加入这两行:
from dotenv import load_dotenvload_dotenv()
这一步漏掉,后面所有 os.getenv("HUNYUAN_API_KEY") 都会返回 None。
检查 .env 文件格式与位置
方法一:路径必须精准匹配
load_dotenv() 默认只查找当前工作目录(即 os.getcwd() 返回的路径)下的 .env 文件。如果你在子目录运行脚本,或用 IDE 的“Run”按钮启动,当前目录可能不是项目根目录。
保险做法是显式指定路径:load_dotenv(".env") 或 load_dotenv(Path(__file__).parent / ".env")。
方法二:语法必须严格合规
每行只能是 KEY=VALUE 格式,等号两侧不能有空格;注释用 # 开头;值含空格或特殊字符需用双引号包裹。错误示例:HUNYUAN_API_KEY = sk-xxx (等号前后有空格)→ 会导致键名变成 "HUNYUAN_API_KEY ",读取失败。
正确写法:HUNYUAN_API_KEY="sk-xxx"。
验证环境变量是否真正生效
第一步:在代码中插入调试语句
import osprint("HUNYUAN_API_KEY:", repr(os.getenv("HUNYUAN_API_KEY")))
如果输出是 HUNYUAN_API_KEY: None,说明 load_dotenv() 没起作用或路径不对;如果输出是 HUNYUAN_API_KEY: 'sk-xxx',说明已加载成功。
第二步:排除 IDE 缓存干扰
PyCharm/VS Code 有时会缓存旧的环境变量。关闭项目→删除 .idea 或 .vscode 目录→重启 IDE→重新运行脚本。
第三步:终端启动时绕过 IDE
进入项目根目录,直接执行:python your_app.py。如果这时能读到密钥,就证实是 IDE 环境配置问题,不是代码问题。
Spring Boot 项目特例处理
Spring Boot 2.4+ 版本默认不识别 .env 文件,必须在 application.properties 中显式声明导入方式:
spring.config.import=optional:file:.env[properties]
然后通过 @Value("${HUNYUAN_API_KEY}") 注入。若未加这行配置,Spring 启动时根本不会扫描 .env 文件,任何密钥都无效。
【注意】该配置必须写在 application.properties 文件最顶部,且不能有任何前置空行或 BOM 字符,否则解析失败。
Docker 容器内加载失败的修复
方法1:用 environment 插值传入(推荐)
在 docker-compose.yml 中写:
environment:- HUNYUAN_API_KEY=${HUNYUAN_API_KEY}
并确保宿主机的 shell 已加载 .env(如 source .env),Docker 才能读取变量值。
方法2:禁止使用 env_file 直接挂载
env_file: [.env] 虽可批量加载,但它不解析 ${VAR} 变量引用,且只在容器启动时读一次,后续修改 .env 不生效,必须重建容器。
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!











