Apple Silicon/M1设备上安装Python firebase-admin失败求助(grpico编译报错)
Fixing Firebase Admin SDK Installation Failures on Apple Silicon (M1) Devices
我帮你梳理下问题的核心根源,再给出几个可行的修复方案,每个方案都会解释背后的原理,确保你清楚为什么这么做:
问题根源
你遇到的安装失败,本质是firebase-admin 5.0.0依赖的grpcio 1.38.0(你提到的grpico是笔误)没有针对Apple Silicon(ARM64)的预编译二进制包。当pip在M1设备上安装这个版本的grpcio时,会触发本地编译,但clang编译该版本的grpcio时会因为架构适配问题报错退出。
方案一:通过Rosetta 2运行x86架构的Python(最稳妥的兼容方案)
这个方案的核心是让Python和pip以x86架构运行,这样会拉取适配x86的预编译grpcio包,跳过本地编译环节:
- 步骤:
- 找到「终端.app」,右键选择「显示简介」,勾选「使用Rosetta打开」,然后重启终端
- 安装x86版本的Python:
arch -x86_64 brew install python - 创建并激活x86架构的虚拟环境:
arch -x86_64 python3 -m venv m1-firebase-env source m1-firebase-env/bin/activate - 安装指定版本的firebase-admin:
pip install firebase-admin==5.0.0
- 原理:Rosetta 2会把x86指令转译为ARM可执行的指令,让x86版本的Python和pip认为自己运行在x86设备上,从而下载预编译的x86 wheel包,避免ARM架构下的编译错误。
方案二:升级firebase-admin到支持ARM的新版本(推荐长期方案)
firebase-admin从6.0.0版本开始,已经更新了grpcio依赖到支持ARM64的版本(比如grpcio >=1.42.0),这些版本有官方预编译的ARM64 wheel包:
- 步骤:
- 安装最新版firebase-admin:
pip install firebase-admin - 如果需要指定版本,选择6.0.0及以上的版本,比如:
pip install firebase-admin==6.2.0
- 安装最新版firebase-admin:
- 原理:新版本的firebase-admin依赖的grpcio已经适配了Apple Silicon,pip可以直接下载ARM64的预编译包,不需要本地编译,从根源上解决了编译失败的问题。
方案三:手动安装兼容ARM的grpcio版本后再安装旧版firebase-admin(仅当必须用5.0.0时使用)
如果你必须使用firebase-admin 5.0.0,可以先安装一个兼容ARM的grpcio版本,再强制安装firebase-admin并跳过依赖检查:
- 步骤:
- 先安装适配ARM的grpcio版本(比如1.48.2,这个版本有ARM64 wheel包,且和firebase-admin 5.0.0兼容):
pip install grpcio==1.48.2 - 安装firebase-admin 5.0.0并跳过依赖安装:
pip install firebase-admin==5.0.0 --no-deps
- 先安装适配ARM的grpcio版本(比如1.48.2,这个版本有ARM64 wheel包,且和firebase-admin 5.0.0兼容):
- 原理:先提前安装好支持ARM的grpcio版本,再安装firebase-admin时不让pip自动安装依赖,这样firebase-admin会使用已安装的兼容版本。注意需要确认版本兼容性,测试下来grpcio 1.48.2和firebase-admin 5.0.0可以正常协同工作。
验证安装成功
安装完成后,可以运行以下命令测试是否能正常初始化SDK:
python -c "import firebase_admin; firebase_admin.initialize_app()"
如果没有报错,说明安装成功。
内容的提问来源于stack exchange,提问作者FBB
相关产品推荐
相关产品推荐

