landlab

Landlab and GRASS GIS

Landlab has some known issues when operating alongside GRASS GIS, the open-source GIS software package. If you’re familiar with GRASS, this will probably come as no surprise to you, since GRASS has known issues a lot of the time. We believe these difficulties only apply to Apple Macs, but it’s always possible these exist on other platforms too.

The specific problem relates to GRASS needing to bind to your machine’s 32bit system Python when installed on a Mac, as opposed to the Conda python distribution you will install during Landlab setup. If you install GRASS before Anaconda, you should not have any problems, but if you install Anaconda first, you will not have a good day. However, there is a (relatively) simple work-around for this if you do end up in this situation, and can’t face removing Anaconda entirely while you install GRASS.

Note that on modern Macs, there is also a second critical issue which will prevent you from installing (and indeed launching) GRASS. GRASS is fundamentally incompatible with an inbuilt security widget that is embedded in both OSX El Capitan and Sierra. It is nonetheless possible to disable this security, however (see below).

Installing GRASS after Anaconda

(Before trying this, test that you definitely cannot install GRASS. There’s always a chance that you already had the troublesome libraries and won’t need to do this.)

The key issue is that GRASS GIS has a python library called wxpython as one of its dependencies, but that wxpython only exists as a 32bit release for Mac system architecture. Conversely, Anaconda is only easily accessible as a 64bit release. Happily, this is only an issue while installing GRASS, so if you’re smart you can set the system back to its original Python during install, then switch it back to Anaconda once you have GRASS up and running.

This is done by altering the PATH variable, which Anaconda will have silently modified during installation. This can be found in the (hidden) file in your system profile called - most likely - .bash_profile. Simply open the file in a text editor, comment out (#) the line or lines that add Anaconda to the path (mine reads simply export PATH="/Users/daniel/anaconda/bin:$PATH"), then save again. This may be enough to allow install, but in order to make sure GRASS can continue to open once you restore the path, also add a line reading export GRASS_PYTHON=/System/Library/Frameworks/Python.framework/Versions/Current/bin/pythonw BEFORE the commented out line setting the PATH.

You can find out a bit more about messing with your system PATH here.

Once you’ve done this, you can follow the normal GRASS instructions, installing both its framework packages and GRASS itself. Fire GRASS up once and check it starts. If it starts up now, you can safely reinstate the line you commented out in the profile file, and GRASS and Anaconda will run happily side by side.

Except…

GRASS won’t run on OSX El Capitan and later

This isn’t really our problem, but we suspect it will nonetheless catch out many of our users. Apparently, Apple have added an inbuilt layer of security (“CSR”) to their newest operating systems, which treats GRASS as hostile software and stops it running. A solution which you may be able to find online is to simply disable this security. This is done by rebooting into recovery mode, opening a terminal, and running csrutil disable, then restarting as normal. Allegedly, doing this creates no additional security risks beyond what have been present on older OSX releases for a long time, but PROCEED AT YOUR OWN RISK. You’ll have to leave it turned off to get GRASS to run. (Reinstate it with csrutil enable, as you’d expect.)

More details on this piece of black magic can be found here: http://grassmac.wikidot.com