Skip to content

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環境との互換性を保つ最適な方法です。

  1. 必要なパッケージをインストール:

    bash
    pip install pydantic-settings
  2. コード内のインポート文を変更:

    python
    # 変更前: 非推奨
    # from pydantic import BaseSettings
    
    # 変更後: 正しいインポート
    from pydantic_settings import BaseSettings

なぜこれが解決策か?

Pydantic v2 では設定管理機能が分離されました。pydantic-settings をインストールすると、BaseSettings クラスが適切な場所からインポート可能になり、vaex の依存関係エラーが解消されます。

解決策2: Pydantic のレガシーモジュールを使用(一時的措置)

既存コードの変更が難しい場合の代替案。ただし長期サポートは保証されません。

python
from pydantic.v1 import BaseSettings  # v1互換モジュールを利用

注意点

この方法は非推奨の回避策です。機能する可能性はありますが:

  • Pydanticの将来のバージョンで動作しなくなるリスクあり
  • vaexが完全にv2に対応した際に問題が再発する可能性あり

よくある間違った解決策

他の回答で提案された以下の方法はこの問題には効果がありません

誤ったアプローチ(クリックで展開)
bash
# 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 が内部的に古いインポート方法を使用していると発生

再発防止のためのベストプラクティス:

bash
# 環境をクリーンに保つ(推奨)
pip install --upgrade vaex pydantic-settings

# 依存関係を固定(チーム開発時)
pip freeze > requirements.txt

補足情報

この解決策は SageMaker Notebook 以外の一般のPython環境(Colab、ローカル環境など)でも有効です。