Upgrading an OS is simultaneously awesome and terrifying. Awesome because you are about to get your hands on what, hopefully, will be some fantastic new features! Terrifying because the upgrade will likely break a lot of software on your system, especially development tools.
|
Ooo, I'm intrigued! But is it safe?
(image from here) |
In my case, I had a pretty good feeling the upgrade from Snow Leopard to Mountain Lion would break many parts of the python scientific computing development environment running on my system. Fortunately, I was going take a hiatus from that kind of development for a while. When I finally picked it back up, everything was working fine, surprisingly! But then I needed to update
Pandas and
iPython...
My development environment was built using
Homebrew and
pip. It's got python, zeromq, numpy, scipy, matplotlib, cython, pandas, ipython, and qtconsole. If you are looking to create an the environment from scratch, check out this
article. It's pretty good. At some point I'll write up what I did. This article focuses on updating your installation.
Happy Path to Updating
My particular installation has a few more packages installed. So, there are more updates that need to occur. Note that when doing some of the upgrades via pip, other upgrades may get automatically triggered. For instance, upgrading matplotlib will likely upgrade tornado; therefore, you would not need to do so explicitly.
01 brew update # update brew itself
02 brew upgrade # update all installed packages
03 pip list # list installed pip packages
04 pip install --upgrade numpy
05 pip install --upgrade scipy
06 pip install --upgrade matplotlib # will likely update tornado for you
07 pip install --upgrade cython
08 pip install --upgrade pandas
09 pip install --upgrade pyzmq
10 pip install --upgrade pygments
11 pip install --upgrade ipython # repeat 'til latest version is installed
12 pip list
13 ipython qtconsole # test ipython in the GUI
14 ipython # test ipython in the terminal
Errors Updating Homebrew
Now, it is very likely that the happy path did not work so smoothly (ah, gotta love updates). Firstly, you may have encountered issues with updating homebrew. Oh I don't know, maybe you saw something that said
error: unable to unlink old '.gitignore' (Permission denied), and several more like it. It kinda looks like this:
Or maybe you got some error stating that
Your local changes to the following files would be overwritten by merge. See my post on
Updating Homebrew Woes for tips on dealing with various issues. I am going to be brief here. The following commands should solve your Homebrew issues, and you can start on the happy path again.
01 brew doctor
02 sudo chown -R $(whoami) $(brew --prefix)
03 cd $(brew --prefix)
04 git fetch origin
05 git reset --hard origin/master
The
brew doctor command will tell you nearly everything that is wrong. Listen to the doctor and do what she says. The chown command will make sure you, the local user, owns the directory in which brew lives. The last three will reset your brew installation to the master branch (so, if you did actually make local changes, you may want to commit them).
Errors Updating PIP Installed Packages
You may have, or will, encounter numerous issues here. Some of them will result from not having updated Xcode and/or Command Line Tools for Xcode (see
Updating Homebrew Woes for details). Here are a few errors you may encounter and solutions:
error: /usr/include/zlib.h: No such file or directory
➜ install/update Xcode and/or Command Line Tools for Xcode
src/_png.cpp:23:13: fatal error: 'png.h' file not found
➜ brew install libpng
various errors installing matplotlib
➜ brew install freetype
➜ brew install libpng
Nifty Tools
The
brew outdated command will list all installed packages that have available updates. So, you can use this command to estimate how much updating you will be doing, and how much time you might have to devote to this endeavor.
Unfortunately, pip does not have a similar command. However, Artur Siekielski wrote a
script that can tell you what pip packages are up-to-date or have available updates. I have not used the script, but it could be handy.
References + Links
Installing Scientific Python on Mac OS X
Updating Homebrew Woes
Homebrew Troubleshooting
Homebrew FAQ
Script to Check for Package Updates on PyPi
http://pandas.pydata.org/
http://ipython.org/
http://brew.sh/
http://www.pip-installer.org