"zsh: illegal hardware instruction python" when installing Tensorflow on macbook pro M1
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
Admin
Updated on September 09, 2021Comments
-
Admin over 2 years
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.
- install a venv:
-
Zaki Aziz about 3 yearsWhen I run
$ file $(which python3)
I only get one option:/opt/homebrew/Caskroom/miniconda/base/envs/svc-pdf-reader/bin/python3: Mach-O 64-bit executable x86_64
Could this be a homebrew related issue? -
dedede almost 3 yearsFirst, deactivate your anaconda env if it's active. Then, change the line to
file $(which /usr/bin/python3)
and run it. -
Charles Duffy almost 3 yearsThere's more than one
which
available in MacOS -- the one built into zsh, and the one shipped as an external binary. They're quite unlike each other; I generally don't recommend usingwhich
at all. -
dedede almost 3 yearsWith all due respect, your comment has not added anything useful to the conversation at all.
-
matanster over 2 yearsApologies for the cyber awareness but how would one verify the affiliation/identity of the maintainer providing that wheel file from over google drive?
-
Vakidis over 2 years@matanster this is something I would also be wary of. In my case, it was such a pain to get it to run any other way so I went with this not optimal solution.
-
matanster over 2 yearsDoes this answer really mean that merely choosing the other python executable makes tensorflow seamlessly run as is?
-
logankilpatrick over 2 yearsIf it's any consolation, I have done this 3-4 times now and my computer has not been hacked : )
-
Shahar Gino about 2 yearsYou may install tensorflow for M1 machines with this pip install command: pip install tensorflow-macos
-
Pardeep Singh about 2 yearsThanks for sharing this. Worked for me and wheel on google drive can be trusted :smile