在 macbook pro M1 上安装 Tensorflow 时出现“zsh:非法硬件指令 python”[重复]

Posted

技术标签:

【中文标题】在 macbook pro M1 上安装 Tensorflow 时出现“zsh:非法硬件指令 python”[重复]【英文标题】:"zsh: illegal hardware instruction python" when installing Tensorflow on macbook pro M1 [duplicate] 【发布时间】:2021-03-30 15:50:32 【问题描述】:

我正在尝试让 tensorflow 在我的 MacBook pro M1 上运行。但是,我在尝试导入时不断收到以下错误:zsh: illegal hardware instruction python

我已经通过link 下载并安装了 tensorflow。

这些是我的安装步骤:

安装一个venv:python3 -m venv venv。 将install_venv.sh(位于下载文件夹中)文件拖到终端,在末尾添加-p。 选择venv的目录作为安装tensorflow的位置。 激活venv。 键入“python”。 尝试导入张量流:import tensorflow as tf

我正在使用 Python 3.8.2。

我看过一些教程,这种确切的方法确实有效,所以我不知道这里有什么问题。

【问题讨论】:

您可以关注此博客以解决类似问题,并尝试来自线程 forums.macrumors.com/threads/… 的相同建议解决方案。此外,有关 mac OS 的 tensorflow 的最新更新,您可以点击此链接 blog.tensorflow.org/2020/11/… 【参考方案1】:

在尝试了一堆解决方案无济于事后,这对我有用。

步骤 1 使用 pyenv 安装 python 版本 3.8.5 并将其设置为您的默认 python 版本。本教程(https://realpython.com/intro-to-pyenv/)有助于 正确配置 pyenv。

步骤 1.1 如果您在 zsh 中运行 pyenv 时遇到问题,请使用此帖子(https://github.com/pyenv/pyenv/issues/1446)。

步骤 1.2 一旦你运行了 python 版本 3.8.5,你可以通过运行 python -V 来检查它应该输出:

Python 3.8.5

第二步通过pip install virtualenv安装virtualenv

步骤 2.1 通过运行virtualenv ENV 创建一个虚拟环境

步骤 2.2 通过运行 source ENV/bin/activate 激活该虚拟环境

第 3 步安装名为 tensorflow-2.4.1-py3-none-any.whl 的 tensorflow 轮,位于此公共 google 驱动器链接 https://drive.google.com/drive/folders/1oSipZLnoeQB0Awz8U68KYeCPsULy_dQ7

步骤 3.1 假设您只是安装了***来下载运行 pip install ~/Downloads/tensorflow-2.4.1-py3-none-any.whl 在您激活的虚拟环境中

第 4 步键入 python,它将在您的终端中显示>>>并键入

>>> import tensorflow
>>>

如果没有“zsh 非法硬件指令”错误,你应该好好去。

注意:如果您使用的是 anaconda,上述方法也可以使用。您可以跳过虚拟环境步骤(假设您通过 Conda 激活了虚拟环境),然后直接转到上面提到的 pip install(步骤 3 及之后的步骤)。

【讨论】:

为网络意识道歉,但是如何验证通过谷歌驱动器提供该轮文件的维护者的隶属关系/身份? @matanster 这也是我要警惕的事情。就我而言,让它以任何其他方式运行都非常痛苦,所以我选择了这个不是最佳的解决方案。 如果有什么安慰的话,我已经做了 3-4 次了,我的电脑还没有被黑客入侵 :)【参考方案2】:

Python3 在 M1 中附带了 2 个架构。

$ file $(which python3)
# If you installed python through Homebrew or Anaconda, deactivate your conda env, then run this line instead:
# $ file $(which /usr/bin/python3)
/usr/bin/python3: Mach-O universal binary with 2 architectures: [x86_64:Mach-O 64-bit executable x86_64] [arm64e:Mach-O 64-bit executable arm64e]
/usr/bin/python3 (for architecture x86_64): Mach-O 64-bit executable x86_64
/usr/bin/python3 (for architecture arm64e): Mach-O 64-bit executable arm64e

在这里,指定使用哪一个非常重要。您可以通过安装这样的脚本来做到这一点:

arch -arm64 bash install_venv.sh my_tf_env

如果您有多个 python 安装,请使用:

arch -arm64 bash install_venv.sh --python=/usr/bin/python3 my_tf_env

您可以将my_tf_env 替换为您选择的任何其他名称/路径。

【讨论】:

当我运行 $ file $(which python3) 时,我只有一个选项:/opt/homebrew/Caskroom/miniconda/base/envs/svc-pdf-reader/bin/python3: Mach-O 64-bit executable x86_64 这可能是与自制软件相关的问题吗? 首先,如果 anaconda 环境处于活动状态,请停用它。然后,将该行更改为file $(which /usr/bin/python3) 并运行它。 MacOS 中有不止一个 which 可用——一个内置在 zsh 中,一个作为外部二进制文件提供。它们彼此完全不同;我一般不建议使用which 恕我直言,您的评论根本没有为对话添加任何有用的内容。 这个答案真的意味着仅仅选择其他python可执行文件就可以让tensorflow按原样无缝运行吗?【参考方案3】:

我遇到了同样的问题

这是因为 M1 芯片。现在有一个预发布版本,可为 macOS 11.0+ 提供硬件加速的 TensorFlow 和 TensorFlow Addons。 M1 Mac 和基于 Intel 的 Mac 通过 Apple 的 ML Compute 框架支持原生硬件加速。

需要安装支持M1芯片的TensorFlow 只需拉出这个tensorflow macos repository 并运行 ./scripts/download_and_install.sh

【讨论】:

以上是关于在 macbook pro M1 上安装 Tensorflow 时出现“zsh:非法硬件指令 python”[重复]的主要内容,如果未能解决你的问题,请参考以下文章

M1 MacBook Pro Android Studio 安装问题 - 没有下载 SDK

Xampp 无法在 m1 Macbook pro 上运行,给我一个错误:

M1 版 MacBook Pro 解决 cocoapods 安装使用问题

Xcode 在 M1 MacBook Pro 上引发构建错误

配备 M1 Max 芯片的新 MacBook Pro 上的 Android Studio?

MacBook Pro m1 搭建前端开发环境