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

如何在Python的.env文件中定义列表?基于FastAPI与Pydantic的配置实践疑问

解决Pydantic从.env加载列表类型配置的问题

你说得没错,Pydantic的BaseSettings确实支持从.env文件加载列表类型的配置,但你的代码里遗漏了明确的类型注解——这才是让Pydantic自动解析逗号分隔字符串为列表的关键。

问题根源

你最初的代码里写的是:

api_tokens = []

这只是给了一个默认空列表,但没有告诉Pydantic这个字段的类型应该是列表。Pydantic无法自动推断出要把.env里的API_TOKENS = abc123,abc321转换成列表,所以解析失败。

修正后的代码

只需要给字段加上明确的类型注解(推荐用list[str]来指定是字符串列表,更严谨):

from fastapi import FastAPI 
from pydantic import BaseSettings 

class Settings(BaseSettings): 
    # 明确标注类型为字符串列表,默认空列表
    api_tokens: list[str] = [] 

    class Config: 
        env_file = ".env" 

settings = Settings() 
app = FastAPI()

.env文件的正确写法

你原来的写法API_TOKENS = abc123,abc321是完全可行的,Pydantic会自动把逗号分隔的字符串拆成列表元素。如果你的token里包含逗号这类特殊字符,可以用双引号包裹单个元素:

API_TOKENS = "token,with,comma",abc321,xyz789

这样设置后,settings.api_tokens就会被解析成["token,with,comma", "abc321", "xyz789"],完全满足你新旧token共存的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 05:33:12