MacOS Big Sur下grpc_tools.protoc编译proto文件报错如何解决
报错原因
核心是grpcio-tools包的二进制架构与当前Python运行环境的架构不匹配,该问题常见于搭载Apple Silicon(M1/M2系列)芯片的Mac设备:
- 若你使用的是arm64架构的Python(例如通过arm版Homebrew安装的Python3.9),但pip默认拉取的
grpcio-tools是x86_64架构的预编译包,系统加载动态库时识别到架构不匹配就会抛出该错误 - 低版本的
grpcio与grpcio-tools对Apple Silicon的原生arm64架构支持不完善,默认提供的预编译包没有对应arm架构的版本,也会触发该问题
修复方案
以下提供三种可行方案,可根据自身需求选择:
方案1:临时使用Rosetta 2转译运行(快速解决)
右键点击终端应用,选择「显示简介」,勾选「使用Rosetta打开」,重启终端后重新激活conda环境,再次执行编译命令即可正常运行。
方案2:原生arm64架构编译安装(性能更优,推荐)
先卸载已安装的不兼容版本:
pip uninstall -y grpcio grpcio-tools
安装时指定从源码编译,强制适配当前设备架构:
GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1 GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1 pip install grpcio grpcio-tools
注意:源码编译需要提前安装Xcode命令行工具,未安装的可先执行xcode-select --install完成安装后再执行上述命令
方案3:使用conda安装适配版本
conda源提供的grpc包已经完成多架构适配,直接用conda命令安装即可:
conda install grpcio grpcio-tools
内容的提问来源于stack exchange,提问作者Sultan Sidhu
相关产品推荐
相关产品推荐

