You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vercel上FastAPI应用环境变量加载失败问题求助

解决方案:Vercel部署FastAPI环境变量加载问题

问题1:Python应用在Vercel上正确加载环境变量是否需要特定配置?

需要。Vercel控制台添加的环境变量会直接注入为系统环境变量,不需要通过python-dotenv的load_dotenv()加载(Vercel不会将这些变量保存为.env文件)。你需要修改代码,区分本地开发和线上环境:

import os
from dotenv import load_dotenv

# 仅本地开发时加载.env文件,Vercel环境直接读取系统变量
if not os.getenv("VERCEL"):
    load_dotenv()

# 读取环境变量
SECRET_KEY = os.getenv("SECRET_KEY")
DATABASE_URL = os.getenv("DATABASE_URL")

Vercel会自动设置VERCEL环境变量为"1",以此判断是否处于线上环境。

问题2:Vercel是否需要特定运行时配置以同时支持Python 3.11和环境变量?

需要。你需要通过vercel.json指定Python运行时版本,无需修改Node.js版本(Python运行时与Node.js版本无关,之前修改Node.js导致崩溃是不必要的操作)。

在项目根目录创建vercel.json文件,内容如下:

{
  "functions": {
    "api/**/*.py": {
      "runtime": "@vercel/python@3.11"
    }
  }
}

该配置指定api目录下的所有Python文件使用3.11版本的运行时,FastAPI在Vercel的标准部署结构是将入口文件放在api目录(如api/main.py)。

问题3:近期是否有人成功在Vercel上运行带有环境变量的FastAPI应用?

是的,大量开发者已成功部署。只要遵循正确的配置步骤,环境变量可以正常加载。


额外配置与排查步骤

  • 确认环境变量生效范围:在Vercel控制台添加变量时,确保选择了对应部署的环境(如Production),部署时会自动注入该环境的变量。
  • 避免上传.env文件:不要将本地的.env文件上传到代码仓库,既不安全,Vercel也不会读取项目内的.env文件。
  • 日志排查:部署后可在Vercel的函数日志中添加调试代码(如print(os.environ.keys())),确认环境变量是否被正确注入。
  • 恢复Node.js默认设置:将Vercel的Node.js版本改回默认值,避免与Python运行时冲突。

内容的提问来源于stack exchange,提问作者Anderson K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 05:27:37