2023년 8월 23일 수요일

[FastAPI] pydantic 에서 pydantic.errors.PydanticImportError: `BaseSettings` has been moved to the `pydantic-settings` 해결[SOLVED]

pydantic migration v1.x to v2.x 오류 해결


안녕하세요. 클스 입니다.

FastAPI를 이용해서 kakao 로그인을 구현하고자 했습니다.

poetry add 'pydantic['email']' 설치를 했습니다. 그랬더니 v1.x --> v2.2로 업그레이드 되면서

기존에 동작하던 configs.py 에서 아래와 같은 오류가 발생했습니다.


pydantic.errors.PydanticImportError: `BaseSettings` has been moved to the `pydantic-settings` 해결[SOLVED]


[원인]
from pydantic import BaseSettings 이 v2.x가 되면서 pydantic-settings로 이동되었다는겁니다.

[해결]
$ poetry self update  [선택사항]

$ poetry add 'pydantic[email]'   
$ poetry add 'pydantic-settings' 설치 합니다.

$ poetry update  [선택사항]

configs.py 소스에서 아래와 같이 수정하면 됩니다.

from asyncio import streams
# from pydantic import BaseSettings, Field # DELETE
from pydantic_settings import BaseSettings # NEW
from pydantic import Field

class DefaultSettings(BaseSettings):
APP_ENV: str

APP_NAME: str
APP_DESCRIPTION: str
APP_VERSION: str
APP_BUILD_NO: int

그리고 pydantic에서 local.env 파일을 설정할때 문자, 숫자에 대한 강력한 validation을 합니다.

[local.env 기존]에는 문자든 숫자든 상관없이 알아서 해줬는데

APP_ENV=local

#START
APP_NAME=admin_api
APP_VERSION=0.0.20230410.1
APP_DESCRIPTION=APIServer
APP_BUILD_NO=11
#END

[local.env 변경]에는 문자든 숫자든 상관없이 알아서 해줬는데 이제는 '문자열' 이렇게 해줘야 합니다.
숫자는 그냥하면 됩니다.

APP_ENV='local'

#START
APP_NAME='admin_api'
APP_VERSION='0.0.20230410.1'
APP_DESCRIPTION='APIServer'
APP_BUILD_NO=11
#END

이상입니다.

"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

SKY 비트 USB4 4K 썬더볼트4 호환 40Gbps PD C타입-C타입 케이블 240W, 1.2m, 블랙, 1개





라벨: , , ,