Updating all python packages that are installed via pip is often referred to as running something like the commands
pip freeze --local | grep -v '^\-e' | cut -d = -f 1 | xargs -n1 pip install -U
However, some problems can occur on Mac OS X, as certain default packages are included into the base python installation.
Packages that rely on new versions of pre-installed packages will throw errors as the default python search path prefers the pre-installed packages. An example is matplotlib: Version 1.5 of matplotlib requires a newer version of the six package than version 1.4.1 that is shipped on El Capitan and errors out with the following message:
/Library/Python/2.7/site-packages/dateutil/rrule.py in <module>()
14
15 from six import advance_iterator, integer_types
---> 16 from six.moves import _thread
17
18 __all__ = ["rrule", "rruleset", "rrulestr",
ImportError: cannot import name _thread
You can fix this problem by properly setting your python path environment to prefer the python pip installed packages. The path can for example be set in the ~/.bashrc to point to
export PYTHONPATH="/Library/Python/2.7/site-packages:$PYTHONPATH"