"zsh: illegal hardware instruction python" when installing Tensorflow on macbook pro M1

I’m trying to get tensorflow working on my MacBook pro M1. However, I keep getting the following error when trying to import: zsh: illegal hardware instruction python

I have downloaded and installed tensorflow via this link.

These were my installation steps:

  • install a venv: python3 -m venv venv.
  • drag the install_venv.sh (which is located within the downloaded folder) file to the terminal, add -p at the end.
  • select the directory of the venv as the location where tensorflow should be installed.
  • activate the venv.
  • type "python".
  • try to import tensorflow: import tensorflow as tf.

I’m using Python 3.8.2.

I’ve seen some tutorials where this exact method does work, so I don’t know what’s the issue here.

Here is Solutions:

We have many solutions to this problem, But we recommend you to use the first solution because it is tested & true solution that will 100% work for you.

Solution 1

This worked for me after trying a bunch of solutions to no avail.

Step 1 Using pyenv install python version 3.8.5 and set it as your default python version. This tutorial(https://realpython.com/intro-to-pyenv/) is helpful for
getting pyenv configured properly.

Step 1.1 Use this post(https://github.com/pyenv/pyenv/issues/1446) if you have troubles running pyenv in zsh.

Step 1.2 Once you have python version 3.8.5 running which you can check by running python -V which should output:

Python 3.8.5

Step 2 Install virtualenv via pip install virtualenv

Step 2.1 Create a virtual environment by running virtualenv ENV

Step 2.2 Activate that virtual environment by running source ENV/bin/activate

Step 3 Install the tensorflow wheel called tensorflow-2.4.1-py3-none-any.whl located at this public google drive link https://drive.google.com/drive/folders/1oSipZLnoeQB0Awz8U68KYeCPsULy_dQ7

Step 3.1 Assuming you simply installed the wheel to downloads run
pip install ~/Downloads/tensorflow-2.4.1-py3-none-any.whl in your activated virtual environment

Step 4 Type python which will bring up >>>in your terminal and type

>>> import tensorflow

If there is no ‘zsh illegal hardware instruction" error you should be good to go.

Note: If you are using anaconda, the above will also work. You can skip the virtual env steps (assuming you have a virtual env activated through Conda) and just go straight to the pip install as mentioned above (steps 3 and later).

Solution 2

Python3 is shipped with 2 architectures in M1.

$ 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

Here, it’s very important to specify which one to use. You can do this by installing the script like this:

arch -arm64 bash install_venv.sh my_tf_env

if you have multiple python installations, use:

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

You can replace my_tf_env with any other name/path you choose.

Solution 3

I had the same issue

This is because of M1 chip. Now there is a pre-release that delivers hardware-accelerated TensorFlow and TensorFlow Addons for macOS 11.0+. Native hardware acceleration is supported on M1 Macs and Intel-based Macs through Apple’s ML Compute framework.

You need to install the TensorFlow that supports M1 chip
Simply pull this tensorflow macos repository and run the ./scripts/download_and_install.sh

Note: Use and implement solution 1 because this method fully tested our system.
Thank you 🙂

All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

Leave a Reply