M1 Mac安装SciKeras后导入TensorFlow触发内核崩溃问题
M1芯片Mac安装运行SciKeras问题修复方案
有大量开发者在M1芯片版Mac上成功安装并正常使用SciKeras,你遇到的报错都是环境配置错误导致的,和SciKeras本身兼容性无关,按以下步骤排查修复即可:
报错1:zsh返回no matches found: scikeras[tensorflow]
这个是zsh shell的默认解析规则导致的:zsh会把命令中未加引号的方括号识别为文件通配符,自动尝试匹配当前路径下对应名称的文件,匹配不到就直接抛出错误,和pip、SciKeras本身没有关系。
解决方式非常简单,给带可选依赖的包名加单引号包裹即可:pip install 'scikeras[tensorflow]'
所有带方括号可选依赖的pip安装命令,在zsh环境下都需要加引号,否则都会触发同类报错。
报错2:执行import tensorflow时内核直接崩溃
这个是核心故障,根源是你创建的Python3.7虚拟环境没有适配M1芯片的可用TensorFlow稳定构建:
- M1系列芯片使用arm64架构,对应架构的TensorFlow官方适配版本最低要求Python3.8,Python3.7只有x86架构的安装包,在M1设备上要么依赖Rosetta转译运行(极易触发环境冲突、内核崩溃),要么根本无法正常加载
- 你尝试安装的
tensorflow==2.7属于非常早期的版本,当时M1芯片的TensorFlow适配还处于测试阶段,本身就存在大量加载崩溃、运算异常的已知问题,不适合在M1设备上使用
实测可用的安装步骤
以下步骤在M1/M2系列芯片Mac上验证过,可以正常安装、运行SciKeras,完成tf.keras.wrappers.scikit_learn到SciKeras的迁移:
- 废弃现有Python3.7虚拟环境,新建Python3.9版本的arm64架构虚拟环境(Python3.9是目前对TensorFlow、SciKeras、Scikit-learn生态插件兼容性最好的版本,不要使用Rosetta转译的x86环境,否则会出现性能损耗和隐性兼容问题)
- 激活虚拟环境后,优先安装适配M1芯片的TensorFlow依赖:
pip install tensorflow-macos tensorflow-metal
安装完成后先单独启动Python解释器执行import tensorflow as tf,确认可以正常输出版本号、无崩溃报错后再进行下一步 - 安装SciKeras:
pip install scikeras
此时已经手动安装了适配本地环境的TensorFlow,不需要再额外安装scikeras的tensorflow可选依赖,避免pip自动覆盖你装好的适配版本 - 安装完成后可以做简单验证:导入
KerasClassifier/KerasRegressor,搭建一个极简的Sequential模型跑一次fit/predict流程,无报错即说明配置完成
避坑提示
- 不要在M1芯片的arm64环境下尝试安装Python3.7对应的TensorFlow,没有可用的稳定官方构建,强行安装大概率出现内核崩溃
- 不要在M1环境下安装2.10版本以下的TensorFlow,早期适配版本bug极多,和SciKeras配合使用时容易出现序列化失败、多进程调用崩溃的问题
内容的提问来源于stack exchange,提问作者user8400607
相关产品推荐
相关产品推荐

