Python tips

python-dotenv, pydantic_settings를 통한 환경 변수 관리

tenjobs 2024. 3. 28. 15:10

FastAPI 사용 기준, main.py 파일과 동일한 경로에 .env 파일을 위치시켜야 한다.

# .env
ENVIRONMENT=LOCAL

python-dotenv 라이브러리가 .env 파일을 자동으로 읽는다.

from dotenv import load_dotenv

# setup environment
load_dotenv()
environment = os.getenv("ENVIRONMENT")

print(f"env: {environment}") # LOCAL

서버 환경 변수에 설정된 값은 load_dotenv()를 선언하지 않아도 된다.

 

pydantic_settings를 통해 환경 변수를 설정할 수도 있다.

import os
from enum import Enum

from typing import ClassVar
from pydantic_settings import BaseSettings, SettingsConfigDict


class Settings(BaseSettings):
    BASE_DIR: ClassVar[str] = os.path.dirname(os.path.dirname(__file__))
    model_config = SettingsConfigDict(
        env_file=os.path.join(BASE_DIR, env_file),  # env_file: .env, .env.dev 등
        env_file_encoding='utf-8',
        extra="ignore",
    )

    SOMETHING: str
    ...

env_file에 (.env, .env.dev) 처럼 여러 환경 파일을 넣을 수도 있다.