You've probably heard a lot about the MacBook that contains the new Apple M1 chip. Quick summary: It's fast. Like, really fast. You, a data scientist or related tech professional, may have bought one.
Disclaimer: We'll attempt to keep this updated as best we can. These instructions are up to date as of November 30, 2020.
Your goal: Run a Jupyter notebook.
Either you're opening a notebook right now and your kernel instantly dies, or you haven't been able to get a Jupyter notebook operational yet. That's why we're here! In this blog, we'll walk through how to get Jupyter functional on your M1 computer -- starting with the download step and ending with a fully operational Jupyter notebook. (We'll assume you don't know if you have Jupyter on your computer yet! If you know with certainty that you have Jupyter downloaded, you can skip down here.)
Check if Python & Jupyter are already installed.
Step 1: Open up your Terminal by holding Command and hitting Space, which should bring up your Spotlight Search. Then, type
Terminal and hit Return.
Step 2: In your Terminal, type
jupyter notebook and hit Return.
- If your Terminal looks like the image directly below and a Jupyter interface opens in your browser like the the second image below, then Jupyter is installed. You're almost done. (It's OK if you get a kernel error, we'll figure that out later!) Skip to step 6.
- If, instead, your Terminal says
command not found: jupyterthen you need to see if Python is even installed before you can install Jupyter. Move to step 3.
Step 3: Let's check if Python has been installed. In the terminal, type
python3 and hit Return.
- If you see something similar
Python 3.X.Y, with the
>>>at the bottom, then great! That means Python 3 is installed. Go ahead and type
quit(). Jump ahead to step 5.
- If you get a
command not found: python3error, this means that you need to install Python. New Mac operating systems should have it already installed, so if you're finding an error, make sure that there isn't a typo somewhere. Move to step 4.
Step 4: You can install Python by going to XCode Command Line Tools. You'll need to login with your Apple ID and follow the instructions. Note that the normal Anaconda download won't work here, as the M1 computer isn't 64-bit. Once you're done, head back up to Step 3.
Step 5: If you've installed Python but had trouble installing Jupyter, then go to your Terminal and type
pip3 install jupyter. If that doesn't work, then head here and follow the instructions.
Now to fix the Jupyter kernel issue!
At this point, Python and Jupyter should be installed. You want to stop your kernel from repeatedly dying.
Step 6: In your Terminal, type
jupyter notebook and hit Return. Once you do, then click "New" (on the right-hand side) and open up a Python 3 notebook.
- If you're able to run commands in your notebook – great! The tutorial is over. Skip to the bottom for a note about TensorFlow (if TensorFlow is what you care about) or feel free to check out some of our other posts, mostly about computer vision, here.
You will need to use the Terminal and/or Finder to find a filepath in your system that ends with
ipykernel/eventloops.py. (On my system, it is
lib/python3.8/site-packages/ipykernel/eventloops.py, but yours may vary slightly. The important thing is that you find the
eventloops.py file.) You will make one change to this file.
- Open Terminal.
nano filepath/ipykernel/eventloops.pywhere filepath should be the specific filepath that takes you to that specific
ipykernelfolder. Hit Enter. You should see the following:
- Use your arrow keys to navigate to
def _use_appnope(), which is the first function toward the bottom of the screenshot above. The
returnline is what we are going to edit.
- In that
returnline, use your arrow keys to navigate all the way to the right-hand side of that line. After
V('10.9'), you are going to add:
and platform.mac_ver() != 'arm64'
The full line should look like this when you are done:
- Once you have made that edit and are sure you haven't created a typo, then hold Control and hit x to exit.
- It will ask you to save. Press y. Then press Return.
I recognize: this process is a very "do as I say and don't ask any questions" process. If you want to know more, George Hotz excellently describes the debugging process in his video; you can jump to around where he makes the change (47 minutes, 30 seconds) here. Note that George also edits the docstring (the text between the """ triple quotation marks """) to better reflect what the function is doing – checking for Apple Silicon.
Step 8: If you've followed the above steps, you should be good to go! I usually quit the Terminal (hold Command and press Q) because I think that, sometimes, updates won't immediately take effect without restarting the Terminal. Make sure that it works by returning to step 6 and writing commands in your Jupyter notebook.
You should now be set up to go!
Thanks for following along! I hope this is helpful. Let us know if you spot any mistakes or needed updates (use the email button on the left side of the screen) – I want to keep this as helpful as possible for people, and new technology tends to change very quickly.
Bonus: Want to use TensorFlow?
If your goal is to install TensorFlow, it isn't officially supported yet on the M1. However, you can create a virtual environment following the instructions here. Notice that while there are workarounds for certain TensorFlow features, other features like
object_detection are not yet supported. If you learn of workarounds, let us know by emailing us!