树莓派Docker容器中Pydantic模块缺失PyErr_GetRaisedException符号报错
解决ARM架构下Pydantic Core缺失PyErr_GetRaisedException符号的问题
问题根源
PyErr_GetRaisedException是Python 3.13才新增的API,你的环境用的是Python 3.12,本身不包含这个符号。出现报错是因为安装的pydantic_core版本是针对Python 3.13编译的预编译包,在3.12环境下无法兼容。
可行解决方案
1. 锁定兼容Python 3.12的pydantic_core版本
在项目的requirements.txt里明确指定支持Python 3.12的pydantic_core版本,比如:
pydantic_core==2.16.3
注:2.16.x系列是最后一批支持Python 3.12的版本,后续发布的版本仅适配Python 3.13及以上。
2. 构建镜像时强制从源码编译pydantic_core
如果不想锁定版本,可以在Dockerfile中先安装编译依赖,再强制从源码安装pydantic_core,跳过预编译的ARM64二进制包:
# 安装编译所需依赖 RUN apt-get update && apt-get install -y gcc python3-dev # 强制源码编译安装pydantic_core RUN pip install --no-binary :all: pydantic_core
3. 升级Python版本到3.13(业务允许的话)
如果你的Flask应用可以兼容Python 3.13,直接把基础镜像换成python:3.13-bookworm,此时Python环境自带PyErr_GetRaisedException符号,预编译的pydantic_core包就能正常运行:
FROM python:3.13-bookworm
4. 检查并同步所有依赖版本
运行依赖检查命令,确保所有第三方包都适配当前Python版本和ARM架构,避免其他类似的二进制兼容问题:
pip check
内容的提问来源于stack exchange,提问作者Joerg55
相关产品推荐
相关产品推荐

