[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
이상입니다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."

댓글
댓글 쓰기