Install Python 3 with NumPy, SciPy and Matplotlib on macOS Mojave
Posted on October 4, 2016 by Paul
Updated 24 March 2019
There is also a video version of this tutorial:
MacOS comes by default with Python 2.7 which, at this point, receives only bug fixes and will be EOL by 2020. Python 3.x is the future and it is supported by all major Python libraries. In this tutorial, we’ll use the latest stable Python 3 release, Python 3.7.2.
There is more than one way to install Python 3 on macOS. In the previous version of this article I used to recommend Miniconda, unfortunately this approach doesn’t seem to work anymore, at least for installing Matplotlib. At the time of this update, 2019, what I recommend is to install Python 3 with Homebrew and using pip from the above to install the libraries.
Start by installing the Command Line Tools for macOS. Please note, that you will need the Command Line Tools even if you’ve already installed Xcode. Open a Terminal and write:
Once the Command Line Tools are installed, we can install Homebrew:
Next, we’ll use the brew command to install the latest stable version of Python:
After the above, you can invoke Python3 using the python3 command. This is what I see if I run python3 on my machine:
Next, let’s follow best practices and create a new Python environment in which we can install NumPy, SciPy and Matplotlib:
At this point, your prompt should indicate that you are using the work environment. You can read more about Python environment in the documentation.
Once an environment is activated, all the install commands will apply only to the current environment. By default, if you close your Terminal, the environment is deactivated. If you want to be able to use it, use the source work/bin/activate command.
We can install NumPy, SciPy and Matplotlib with:
As a side note, when you are in a new environment you can use python to invoke the Python interpreter, no need to use the version number.
Fire up Python, import scipy and print the version of the installed library. This is what I see on my machine:
Let’s try something a bit more interesting now, let’s plot a simple function with Matplotlib. First, we’ll import SciPy and Matplotlib with:
Next, we can define some points on the (0, 1) interval with:
Now, let’s plot a parabola defined by the above interval:
You should see something like this:
As you’ve probably noticed, plt.show() is a blocking command. You won’t be able to use the interpreter until you close Figure 1.
There is also an interactive mode in which you can plot functions. Close Figure 1 and write:
This is what you should see:
At any point you can disable the interactive plot mode with:
after which you will need to use the plt.show() function in order to actually see the result of the plt.plot function.
If you want to learn more about Python and Matplotlib, I recommend reading Python Crash Course by Eric Matthes. The book is intended for beginners, but has a nice Data Visualization intro to Matplotlib chapter:
Another good Python book, for more advanced users, which also uses Matplotlib for some of the book projects is Python Playground by Mahesh Venkitachalam: