我使用的是配备 M1 处理器、macOS 版本 11.0.1、PyCharm 中的 Python 3.8、Tensorflow 版本 2.4.0rc4(也尝试过 2.3.0、2.3.1、2.4.0rc0)的 MacBook Pro。我正在尝试运行以下代码:
import tensorflow
这会导致错误消息:
Process finished with exit code 132 (interrupted by signal 4: SIGILL)
代码在我的 Windows 和 Linux 机器上运行良好。错误消息是什么意思,我该如何解决?
原文由 user505117 发布,翻译遵循 CC BY-SA 4.0 许可协议
似乎当您安装了多个 python 解释器时会发生此问题,其中一些解释器适用于不同的架构师(x86_64 与 arm64)。您需要确保使用了正确的 python 解释器,如果您安装了 Apple 版本的 tensorflow,则可能需要 arm64 解释器。
如果你使用 rosetta(Apple 的 x86_64 模拟器),那么你需要使用 x86_64 python 解释器,如果你以某种方式加载 arm64 python 解释器,你将得到非法指令错误(这完全有道理)。
如果您使用任何安装新 python 解释器的脚本,那么您需要确保安装了适用于该体系结构的正确解释器(很可能是 arm64)。
总的来说,我认为这个问题的发生是因为 python 环境设置不是为可以运行多个指令集/体系结构的系统制作的,
pip
确实检查了包的体系结构和主机系统,但似乎你可以运行 x86_64 解释器加载用于 arm64 的包,这会产生问题。作为参考,人们可以检查
tensorflow_macos
中的一个 问题。