概要
FastAPIのアプリをAWS Lambdaで動かそうとしたら以下のエラーが発生しました。
解決方法を紹介します。
[ERROR] PydanticUserError: A non-annotated attribute was detected:
os = <module 'os' (frozen)>
. All model fields require a type annotation; ifos
is not meant to be a field, you may be able to resolve this error by annotating it as aClassVar
or updatingmodel_config['ignored_types']
.
解決方法
エラーメッセージから察するに、Pydantic(=データモデルの定義とバリデーションを簡単に行うためのツール)がクラスの属性としてos
モジュールを誤って認識してしまっているのが原因。
具体的には、以下のように、2回モジュールをインポートしてしまっていました。
import os
from pydantic import BaseModel
class MyModel(BaseModel):
import os # これが原因でエラーが発生する
name: str
age: int
この場合、Pydanticがos
モジュールをフィールドとして誤認識し、型注釈がないためエラーが発生していたのだと思われます。
import os
を1回だけにしたらエラーは無くなりました!