Djangoに限りませんがPythonのWebアプリケーションサーバーでMatplotlibを使おうとすると以下のようなメッセージを吐き出し最悪サーバーがダウンしてしまうことがあります。
Assertion failed: (NSViewIsCurrentlyBuildingLayerTreeForDisplay() != currentlyBuildingLayerTree), function NSViewSetCurrentlyBuildingLayerTreeForDisplay, file /BuildRoot/Library/Caches/com.apple.xbs/Sources/AppKit/AppKit-1671.10.106/AppKit.subproj/NSView.m, line 14143. Process finished with exit code 132 (interrupted by signal 4: SIGILL)
これを回避するのは実に簡単な方法で出来ます。
以下赤字のようpylabやpyplotをimportする前にMatplotlibのバックエンドプログラムを指定するだけです。
バックエンドは”Agg”以外にもありますが、大部分の使用パターンをこれでカバー出来るので”Agg”を指定しておけばOKかと思います。
import matplotlib
matplotlib.use(‘Agg’)
import matplotlib.pyplot as plt