苹果M1芯片设备运行Python项目出现grpc/Google API导入错误
错误原因
你遇到的报错核心是架构不匹配:你安装的grpcio==1.41.1版本发布于2021年10月,当时grpc官方还未提供适配M1系列arm64架构的预编译二进制包,你当前环境安装的是x86_64架构的grpcio包,无法在arm64架构的M1设备上加载。
解决方案
方案1(优先选择):升级grpcio到适配M1的版本
grpcio从1.44.0版本开始正式提供M1适配的预编译包,直接升级即可解决问题,操作步骤如下:
- 激活项目虚拟环境后,卸载旧版本相关依赖:
pip uninstall -y grpcio grpcio-status googleapis-common-protos
- 安装适配版本的依赖:
pip install grpcio>=1.44.0 google-cloud-vision
安装完成后重新启动项目即可。
方案2:本地编译指定版本grpcio
如果你的项目有版本兼容要求,不能升级grpcio到1.44.0及以上版本,可以选择在本地编译对应版本的arm64架构grpcio包:
- 先确保已安装Xcode命令行工具,未安装的话执行:
xcode-select --install
- 指定编译参数安装对应版本的grpcio:
GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1 GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1 pip install grpcio==1.41.1
编译完成后即可正常加载。
方案3(临时兼容方案):使用Rosetta2转译运行
如果不想修改依赖,可通过Rosetta2转译运行你的开发环境:
- 找到终端/VSCode的应用程序图标,右键点击选择「显示简介」
- 勾选「使用Rosetta打开」,重启应用后再运行项目即可正常加载x86架构的grpcio包
该方案走转译运行,性能会有一定损耗,适合临时调试使用。
注意事项
如果你的Python环境是通过conda/miniforge安装的,需要确认你安装的是arm64版本的Python,若安装的是x86版本的Python,默认拉取的所有依赖都会是x86架构,也会触发同类报错。
内容的提问来源于stack exchange,提问作者Gabriel Herndon
相关产品推荐
相关产品推荐

