克隆DocQuery项目后出现ImportError:无法导入ModelField
解决
ImportError: cannot import name 'ModelField' from 'pydantic.fields'问题 问题根源
ModelField是Pydantic v1.x的专属类,Pydantic v2.x已彻底移除该类并改用FieldInfo等替代接口。你指定pydantic==1.3未解决问题,大概率是项目依赖链中的其他包(比如docquery的间接依赖)强制安装了Pydantic v2.x版本,覆盖了你指定的旧版本。
修复步骤
锁定兼容的Pydantic版本
放弃过旧的pydantic==1.3,改用Pydantic v1的最新稳定版,同时通过约束文件强制环境使用该版本:- 在项目根目录创建
constraints.txt文件,写入:pydantic<2.0.0,>=1.10.0 - 执行安装命令:
pip install -r requirements.txt -c constraints.txt
- 在项目根目录创建
手动清理并重装依赖
先检查当前环境的Pydantic实际版本:pip show pydantic如果显示为v2.x,先卸载:
pip uninstall -y pydantic再安装指定的兼容版本:
pip install pydantic==1.10.13调整requirements.txt的依赖顺序
将Pydantic的版本约束放在requirements.txt最顶部,确保优先安装,避免被后续依赖覆盖:pydantic<2.0.0 torch transformers==[你的指定版本号] docquery用虚拟环境隔离依赖
若以上方法无效,创建全新虚拟环境重新安装:python -m venv docquery-env # Windows激活环境 docquery-env\Scripts\activate # Linux/macOS激活环境 source docquery-env/bin/activate pip install -r requirements.txt
补充说明
docquery官方依赖配置未明确限制Pydantic的大版本范围,导致pip默认拉取最新的v2.x版本,进而触发导入错误。锁定Pydantic v1版本即可彻底解决该问题。
内容的提问来源于stack exchange,提问作者Khant Thu Linn
相关产品推荐
相关产品推荐

