具有本地 ENV 文件的 BaseSettings 模型的 Pydantic 验证错误

Pydantic validation error for BaseSettings model with local ENV file

我正在开发一个简单的 FastAPI 应用程序,我正在使用 Pydantic 来存储应用程序设置。

一些设置是从 Ansible 部署工具设置的环境变量中填充的,但其他一些设置需要从单独的 env 文件中明确设置。

所以我在 config.py

中有这个
class Settings(BaseSettings):

    # Project wide settings
    PROJECT_MODE: str = getenv("PROJECT_MODE", "sandbox")
    VERSION: str

    class Config:
        env_file = "config.txt"

我有这个config.txt

VERSION="0.0.1"

因此 project_mode env var 由部署脚本设置,version 由 env 文件设置。这样做的原因是我们希望在所有项目中保持部署脚本相似,因此任何自定义变量都是从项目特定的 env 文件中填充的。

但问题是,当我 运行 应用程序时,它失败了:

pydantic.error_wrappers.ValidationError: 1 validation error for Settings
VERSION
  field required (type=value_error.missing)

那么如何从本地 ENV 文件填充 Pydantic 设置模型?

如果环境文件没有被提取,大多数情况下是因为它没有放在当前工作目录中。在您的应用程序中,需要位于应用程序所在的目录中 运行(或者如果应用程序管理 CWD 本身,则位于它期望找到它的位置)。

特别是当 运行ning 测试时,这可能有点混乱,您可能必须配置 IDE 到 运行 测试,并将 CWD 设置为项目根目录,如果你 运行 来自你 IDE 的测试。