This is my preferred way to install Python and Jupyter notebook for doing scientific data analysis. There are many alternative ways of doing this that you can find on Google. I’m doing this on a MacBook Pro (Retina, 13-inch, Early 2015) with macOS High Sierra 10.13.3.
In the past, I used
virtualenv to manage virtual environments with Python 2. Python3 has built-in handling of virtual environments, so I use that here instead. If you need to use Python 2, then you’ll want to install
virtualenv (see first link at the bottom).
All of these steps are done in the Mac OS Terminal, so start that first.
First install XCode:
ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Open or create the file ~/.bash_profile and write:
Install Python 3
As of 2018-4-9, this will install Python 3 (I think previously it installed Python 2):
brew install python
Set up virtual environment
By default, Python 3 comes with the ability to create virtual environments.
Make a folder to host your virtual envs:
cd mkdir .virtualenvs
Create a virtual env for Jupyter:
python3 -m venv .virtualenvs/jupyter/
Run virtual environment and Jupyter
Start the virtual env:
Install packages for scientific computing:
pip install numpy scipy matplotlib jupyter pandas
A browser window will open with the Jupyter file browser in your current working directory.
Exit Jupyter and virtual environment
Jupyter notebook will run in your terminal window until you close it (with Ctrl-C).
You can close the virtual environment with:
UPDATE 2018-04-19: A very useful (and IMO essential) addition to Jupyter notebook is the Table of Contents extension. I show how I install this in a different blog post.
- The steps above are mostly based on Maria Mele’s “Install Python 2.7, virtualenv and virtualenvwrapper on OS X Mavericks/Yosemite”
- Documentation on Python 3 virtual environments
- Explanation of how Homebrew installs Python — i.e. why Python 3 isn’t linked to the command`python`, which motivated some of my deviations from the above blog post