PylabをCGIスクリプト上で使うときに発生するエラーを直すメモ (Python)

seihiguchi2007-08-30



実験装置を動かすために、シミュレーションに使ったMATLABスクリプトPYTHONへと移植しているのだが、ウェブブラウザベースのGUIをつけたいのでCGIを作っている。核となる数値計算の部分は手つかずでプランより遅れがちなのだが、GUIおよび実験そのものを制御する大本のプログラムはできつつある。実験の期間は満足のいくデータを取るためには、大体数日から1週間くらいは稼働させないといけないため、その途中でプログラムを走らせながらデータの変化する様子をグラフに表示させて、常に更新されるようにしたい。そこでGnuplotでもいいのだが、Pylabを使ってグラフを出力することに決定した。


そこまでは、よかったのだが、なにやらわけのわからん原因で書いたスクリプトが動かない。Apacheのログを見ると

[Thu Aug 30 18:00:35 2007] [error] [client xx.xx.xx.xx] RuntimeError: please define environment variable $HOME

とあり、環境変数のHOMEが設定されていないのが原因らしい。

http://www.scipy.org/Cookbook/Matplotlib/Using_MatPlotLib_in_a_CGI_script

にあるように、

os.environ[ 'HOME' ] = '/tmp/'
import matplotlib
matplotlib.use( 'Agg' )
import pylab

このようにpylabをimportしてやればよい模様。