MENU

Knowledge Oasisは主にAIとAWSの知識を共有するブログです。その他ITに関する知識やまれに生活に役立つ知識も共有するかもしれません。

KOふみ
名前はKOふみ(こふみ)。独立系SIerで20年のキャリアを持ち、新人研修の講師から請負開発まで幅広く経験。現在はAIを駆使したソリューション開発に従事。資格は応用情報技術者、データベーススペシャリスト、プロジェクトマネージャー、PMP、簿記2級。AWS学習中で、将来はAWSアンバサダーを目指す。

Unable to import module ‘lambda_function’: No module named ‘pydantic_core._pydantic_core’の対処法

Unable to import module 'lambda_function': No module named 'pydantic_core._pydantic_core'の対処法
  • URLをコピーしました!

OpenAIのLambdaレイヤーを作成した際にレイヤーの構造は正しいのに上手く動かないという事象に遭遇しました。ローカルでは上手く動くのにLambdaレイヤーにすると動かないという困った事象について解説します。

2024/8/9に原因と対応方法を修正しました。
目次

発生したエラー

OpenAIのLambdaレイヤーを作成してLambda関数を動かしたところ、以下のエラーが発生しました。

Response
{
  "errorMessage": "Unable to import module 'lambda_function': No module named 'pydantic_core._pydantic_core'",
  "errorType": "Runtime.ImportModuleError",
  "requestId": "de568349-a66b-4867-a69c-921c5f995bb3",
  "stackTrace": []
}

エラーの原因

Windows環境でLambdaレイヤーを構築したために発生した事象でした。Windows環境でopenaiライブラリをインストールするとpydantic_coreに_pydantic_core.cp312-win_amd64.pyd というファイルが含まれます。拡張子.pyd(Python Dynamic module)はwindows環境専用のファイルであるため、Lambdaが実行されるLinux環境では動かすことができません。Linux環境でインストールスト _pydantic_core.cpython-39-x86_64-linux-gnu.so というファイルになります。拡張子.so(Shared Object)はLinux環境で動かすことができるのでエラーが解消されます。

対応方法

恒久対応

Linux環境でLambdaレイヤーを作成して下さい。

暫定対応

Linux環境が準備できずどうしてもWindows環境でLambdaレイヤーを作成する必要がある場合はFastAPIの0.99.0をインストールすることで回避できます。FastAPIの0.99.0をインストールすることでpydantic_coreを使用しないpydantic1.10.17がインストールされエラーが解消します。

Windowsであれば以下のコマンドでレイヤーを作成することで動きます。

py -m venv .python-openai-layer
cd .python-openai-layer
Scripts\activate
mkdir python\lib\python3.12\site-packages
pip install fastapi==0.99.0 -t python\lib\python3.12\site-packages
pip install openai -t python\lib\python3.12\site-packages
zip -r openai-layer.zip python

pydanticはpydantic_coreを使用することで高速化を図っています。
暫定対応では処理速度に影響が出る可能性があります。
極力Linux環境で構築することをお勧めします。

まとめ

OpenAIのLambdaレイヤーを作成する際のはまりポイントについて解説しました。構築する環境で動きが異なるとは思ってもみませんでした。ネットで調べるとFastAPIをダウングレードする方法はたくさん見つかりますが、詳細な原因と副作用まで書いているサイトは見たことがありません。この記事が皆さんの役に立つことを期待しています。

  • URLをコピーしました!

コメント

コメントする

目次