======================== Recipe 2 : using anaconda ========================= # install packages using macports sudo port install openmpi # activate what we have just installed (mandatory) sudo port select mpi openmpi-mp-fortran # my anaconda is in my $HOME - no need for sudo pip install mpi4py conda install netcdf4 compile the remap library run the remap.py script ==================== Checking which libraries are loaded ====================== Useful to make sure that mpirun, remap and python use the same MPI library. sudo dtruss -f -t open sudo -u $(whoami) mpirun -np 1 python test.py 2>out grep mpich out grep openmpi out where test.py contains from mpi4py import MPI import netCDF4 import ctypes as ct import os test = ct.cdll.LoadLibrary(os.path.realpath('libmapper.so')) If grep finds both mpich and openmpi, something is wrong ! ====================== Various ways to mess up python/netCDF/MPI on MacOS ==================== Anaconda vs macports python =========================== I have several pythons installed : 3 from Apple, one from macports and one from the Anaconda distribution, which is the default on my path. * find whether we use python from MacPorts or anaconda which python the one from macports is in /opt/local/bin * check active macports python version port select python (mine : python27) * if desired, set the path to avoid anaconda echo $PATH result : /Users/dubos/anaconda/bin:/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/texbin export PATH=/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/opt/X11/bin:/usr/texbin Below, [with macports] assumes that « which python » finds /opt/local/bin/python » while [with anaconda] assumes it finds the anaconda-provided python. Python-netCDF ============= [with macports] : sudo port install py-netcdf4 [with anaconda] : conda install netcdf4 Notice that this will also compile its own instance of netCDF. Notice that in principle one could install python-netcdf using pip or easy_install. In my case it fails - there is a version mismatch for the HDF library at runtime MPI === Macports can install openmpi, mpich or both (I have both). If both are installed one is activated by « port select ». It will install it for a specific compiler. * checking your active compiler port select gcc * installing openmpi sudo port install openmpi * checking for which gcc openmpi has been compiled port installed openmpi-default * checking your active mpi port select mpi * selecting openmpi (for example) sudo port select mpi openmpi-mp-fortran MPI4py ====== It is important to compile the mapper library with the same MPI as mpi4py ! easy_install fails on my Mac so I must use pip [with MacPorts] : sudo port install py-pip sudo port select pip pip27 sudo pip install mpi4py [with anaconda] : pip is already installed, which pip pip install mpi4py