为什么在mac上加载tensorflow会导致“进程结束,退出代码为132(被信号4:sigill中断)”?

frebpwbc  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(2775)

我使用的是带有m1处理器的macbook pro,macos版本11.0.1,pycharm中的python 3.8,tensorflow版本2.4.0rc4(也尝试了2.3.0、2.3.1、2.4.0rc0)。我正在尝试运行以下代码:

import tensorflow

这将导致错误消息:

Process finished with exit code 132 (interrupted by signal 4: SIGILL)

代码在我的windows和linux机器上运行良好。错误消息的含义是什么?我如何修复它?

pbossiut

pbossiut1#

似乎当您安装了多个python解释器时,就会出现这个问题,其中一些解释器是针对不同的体系结构(x86_64与arm64)。您需要确保使用了正确的python解释器,如果您安装了apple版本的tensorflow,那么可能需要一个arm64解释器。
如果使用rosetta(苹果的x86_64仿真器),则需要使用x86_64 python解释器,如果以某种方式加载arm64 python解释器,则会出现非法指令错误(这完全有道理)。
如果您使用任何安装新python解释器的脚本,那么您需要确保为该体系结构安装了正确的解释器(很可能是arm64)。
总的来说,我认为出现这个问题是因为python环境设置不是为可以运行多个指令集/体系结构的系统设计的, pip 确实检查了包和主机系统的体系结构,但似乎可以运行x86_64解释器来加载用于arm64的包,这就产生了问题。
作为参考,本文件中存在一个问题 tensorflow_macos 人们可以检查。

相关问题