You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

导入ydata-profiling时遭遇Pydantic BaseSettings迁移错误求助

解决ydata-profiling导入时的PydanticImportError问题

我尝试用以下代码导入ydata-profiling进行探索性数据分析(EDA):

from ydata_profiling import ProfileReport as pf

由于Pandas-profiling已过时,且当前环境使用Pydantic V2版本,本期望ydata-profiling能正常工作,却触发了PydanticImportError,提示BaseSettings已迁移到pydantic-settings包,完整报错堆栈如下:

PydanticImportError Traceback (most recent call last)
Cell In[14], line 1
----> 1 from ydata_profiling import ProfileReport as pf

File ~\anaconda3\Lib\site-packages\ydata_profiling_init_.py:7
1 """Main module of ydata-profiling.
2
3 .. include:: ../../README.md
4 """
5 import importlib.util
----> 7 from ydata_profiling.compare_reports import compare
8 from ydata_profiling.controller import pandas_decorator
9 from ydata_profiling.profile_report import ProfileReport

File ~\anaconda3\Lib\site-packages\ydata_profiling\compare_reports.py:9
6 import pandas as pd
7 from dacite import from_dict
----> 9 from ydata_profiling.config import Correlation, Settings
10 from ydata_profiling.model import BaseDescription
11 from ydata_profiling.model.alerts import Alert

File ~\anaconda3\Lib\site-packages\ydata_profiling\config.py:7
4 from typing import Any, Dict, List, Optional, Tuple, Union
6 import yaml
----> 7 from pydantic import BaseModel, BaseSettings, Field, PrivateAttr
10 def _merge_dictionaries(dict1: dict, dict2: dict) -> dict:
11 """
12 Recursive merge dictionaries.
13
(...)
16 :return: Merged dictionary
17 """

File ~\anaconda3\Lib\site-packages\pydantic_init_.py:210, in getattr(attr_name)
208 dynamic_attr = _dynamic_imports.get(attr_name)
209 if dynamic_attr is None:
--> 210 return _getattr_migration(attr_name)
212 from importlib import import_module
214 module = import_module(_dynamic_imports[attr_name], package=package)

File ~\anaconda3\Lib\site-packages\pydantic_migration.py:289, in getattr_migration..wrapper(name)
287 return import_string(REDIRECT_TO_V1[import_path])
288 if import_path == 'pydantic:BaseSettings':
--> 289 raise PydanticImportError(
290 'BaseSettings has been moved to the pydantic-settings package. '
291 f'See https://docs.pydantic.dev/{version_short()}/migration/#basesettings-has-moved-to-pydantic-settings '
292 'for more details.'
293 )
294 if import_path in REMOVED_IN_V2:
295 raise PydanticImportError(f'{import_path} has been removed in V2.')

PydanticImportError: BaseSettings has been moved to the pydantic-settings package. See https://docs.pydantic.dev/2.3/migration/#basesettings-has-moved-to-pydantic-settings for more details.

For further information visit https://errors.pydantic.dev/2.3/u/import-error

可行解决方案

1. 升级ydata-profiling至兼容Pydantic V2的版本

ydata-profiling从4.5.0版本起正式支持Pydantic V2,执行以下命令更新:

pip uninstall -y ydata-profiling
pip install ydata-profiling --upgrade

2. 回退Pydantic到V1版本

若暂时无需升级ydata-profiling,可安装Pydantic V1.x稳定版来适配旧版本的ydata-profiling:

pip uninstall -y pydantic
pip install pydantic==1.10.12

3. 临时兼容补丁(不推荐长期使用)

需保留Pydantic V2时,可通过安装pydantic-settings并创建兼容导入的补丁:

  • 先安装依赖:
pip install pydantic-settings
  • 在项目目录下创建pydantic_compat.py文件,内容如下:
from pydantic_settings import BaseSettings as _BaseSettings
from pydantic import *

BaseSettings = _BaseSettings
  • 在导入ydata-profiling前加载兼容补丁:
import sys
sys.modules['pydantic'] = __import__('pydantic_compat')
from ydata_profiling import ProfileReport as pf

内容的提问来源于stack exchange,提问作者Karthik Kumar P

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:53:12