已安装pydantic-core但仍出现ModuleNotFoundError: No module named 'pydantic_core._pydantic_core'报错
已安装pydantic-core但仍出现ModuleNotFoundError: No module named 'pydantic_core._pydantic_core'报错
嘿,我之前在Alpine容器里踩过类似的坑,来给你唠唠可能的原因和解决办法!
先复盘下你的场景哈:
- 用的是基于
node:20-alpine的Docker容器,跑的是Python 3.13 - 用
uv pip install mcp==1.6.0装的依赖 - 导入
from mcp.server import NotificationOptions, Server时,就弹出了找不到pydantic_core._pydantic_core的错误,可明明已经装了pydantic-core对吧?
大概率是这几个原因导致的,对应解决办法给你列出来:
1. Alpine系统缺底层依赖,导致pydantic-core没装对
Alpine用的是musl libc,而很多Python包的预编译wheel是针对glibc做的,pydantic-core的底层扩展模块需要依赖系统库才能正常安装。你可以先装系统编译依赖,再重新装pydantic-core:
首先在容器里执行:
apk add --no-cache gcc musl-dev python3-dev
然后强制重新从源码编译安装pydantic-core:
uv pip install --force-reinstall --no-binary pydantic-core pydantic-core
或者直接重新安装mcp,让它自动处理依赖的重新编译:
uv pip install --force-reinstall --no-binary pydantic-core mcp==1.6.0
2. Python 3.13版本太新,兼容性还没跟上
Python 3.13是刚出的版本,不少第三方包的适配还没完全跟上,尤其是pydantic-core这类依赖底层扩展的包。如果上面的办法没用,你可以试试把Python版本降到3.12——毕竟3.12的生态支持已经很成熟了,在Dockerfile里调整Python版本后重新构建容器,再装依赖应该就能解决。
3. 检查虚拟环境或包路径是否正确
有时候uv安装的包路径没被当前Python环境识别,比如你没激活对应的虚拟环境。可以在Python交互窗口里跑这两行看看:
import sys print(sys.path)
如果输出里找不到pydantic-core安装的目录,那要么是你没激活虚拟环境,要么得手动把包路径添加到sys.path里(不过更推荐前者,规范使用虚拟环境)。
备注:内容来源于stack exchange,提问作者user15980977




