pydantic ImportError: BaseSettings has moved to pydantic-settings
問題の説明
vaex
ライブラリ(バージョン 4.16.0)をインポートしようとすると、以下のエラーが発生する問題です。
PydanticImportError: `BaseSettings` は `pydantic-settings` パッケージに移動されました。
詳細はこちらをご覧ください: https://docs.pydantic.dev/2.0.2/migration/#basesettings-has-moved-to-pydantic-settings
このエラーは Pydantic v2 の重要な変更に起因しています。Pydantic v2 では、BaseSettings
クラスがコアライブラリから分離され、別パッケージ pydantic-settings
に移動されました。既存のコードや依存ライブラリ(この場合 vaex
)が新しいバージョンで動作しない場合に発生します。
頻発する状況
- AWS SageMaker Notebook 環境でよく発生
- Pydantic v2 の新しいアップデート後に
vaex
をインポートする際 pip install pydantic==1.x
などのダウングレード試行が失敗した場合
解決策
解決策1: pydantic-settings をインストール(推奨)
最新のPydantic v2環境との互換性を保つ最適な方法です。
必要なパッケージをインストール:
bashpip install pydantic-settings
コード内のインポート文を変更:
python# 変更前: 非推奨 # from pydantic import BaseSettings # 変更後: 正しいインポート from pydantic_settings import BaseSettings
なぜこれが解決策か?
Pydantic v2 では設定管理機能が分離されました。pydantic-settings
をインストールすると、BaseSettings
クラスが適切な場所からインポート可能になり、vaex
の依存関係エラーが解消されます。
解決策2: Pydantic のレガシーモジュールを使用(一時的措置)
既存コードの変更が難しい場合の代替案。ただし長期サポートは保証されません。
from pydantic.v1 import BaseSettings # v1互換モジュールを利用
注意点
この方法は非推奨の回避策です。機能する可能性はありますが:
- Pydanticの将来のバージョンで動作しなくなるリスクあり
vaex
が完全にv2に対応した際に問題が再発する可能性あり
よくある間違った解決策
他の回答で提案された以下の方法はこの問題には効果がありません:
誤ったアプローチ(クリックで展開)
# pandas-profilingのインストール(関係ない)
pip install https://github.com/pandas-profiling/pandas-profiling/archive/master.zip
# bump-pydanticツールの使用(問題と無関係)
pip install bump-pydantic
bump-pydantic anaconda_cloud_auth
これらの方法はエラーの根本原因(BaseSettingsの移動)に対処しておらず、別のライブラリ用の解決策です。
根本原因と予防策
原因の技術的背景:
- Pydantic v1では
BaseSettings
はメインパッケージに含まれていた - v2ではモジュール化に伴い
pydantic-settings
という専用パッケージに分離 vaex
が内部的に古いインポート方法を使用していると発生
再発防止のためのベストプラクティス:
# 環境をクリーンに保つ(推奨)
pip install --upgrade vaex pydantic-settings
# 依存関係を固定(チーム開発時)
pip freeze > requirements.txt
補足情報
- 公式移行ガイド: Pydantic v2 Migration Guide - BaseSettings moved
vaex
の最新バージョンではこの問題は修正されている可能性があるため、アップグレードを検討:bashpip install --upgrade vaex
この解決策は SageMaker Notebook 以外の一般のPython環境(Colab、ローカル環境など)でも有効です。