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-pat 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.
23 Answers
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() is helpful for getting pyenv configured properly.
Step 1.1 Use this post() 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.5Step 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
Step 3.1 Assuming you simply installed the wheel to downloads runpip 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).
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 arm64eHere, 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_envif you have multiple python installations, use:
arch -arm64 bash install_venv.sh --python=/usr/bin/python3 my_tf_envYou can replace my_tf_env with any other name/path you choose.
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