Google Cloud Function无法导入Pandas的问题求助
解决Google Cloud Function导入Pandas触发的numpy二进制兼容错误
问题原因
你遇到的ValueError: numpy.dtype size changed, may indicate binary incompatibility. Expected 96 from C header, got 88 from PyObject错误,核心是numpy版本与pandas 2.0.3的编译依赖不匹配。Google Cloud Function的运行环境大概率最近更新了默认的numpy版本,而pandas是基于特定版本的numpy编译的,新的numpy版本在C层面的结构体大小(比如dtype)发生了变化,导致调用时出现二进制冲突。
修复方案
直接在requirements.txt里固定与pandas 2.0.3兼容的numpy版本,强制安装匹配依赖:
修改后的requirements.txt:
functions-framework==3.* pandas==2.0.3 numpy==1.24.3
操作步骤
- 替换原有
requirements.txt内容为上述代码 - 重新部署你的测试函数
test_fcn - 调用函数确认是否正常返回
ok
额外说明
- 之前能正常运行是因为当时Cloud Function环境的numpy版本刚好在pandas 2.0.3的兼容范围内,环境更新后默认版本超出了这个范围,才触发了问题
- 选择numpy 1.24.3是因为它属于pandas 2.0.3官方明确支持的版本区间(
numpy >=1.21.0, <1.26.0),且是经过验证的稳定兼容版本 - 尽量避免使用
numpy>=x.x.x这种模糊版本指定,固定具体版本能彻底规避环境更新带来的兼容问题
内容的提问来源于stack exchange,提问作者Rudy Hofmeister
相关产品推荐
相关产品推荐

