これを試してみませんか?
import matplotlib,os
r = os.system('python -c "import matplotlib.pyplot as plt;plt.figure()"')
if r != 0:
matplotlib.use('Agg')
import matplotlib.pyplot as plt
fig = plt.figure()
fig.savefig('myfig.png')
else:
import matplotlib.pyplot as plt
fig = plt.figure()
plt.show()
pythonのOSモジュールでディスプレイがあるかどうかを直接検出できます。私の場合は
です>>> import os
>>> os.environ["DISPLAY"]
':0.0'
以下のコードは、Linux と Windows (ディスプレイ デバイスがあることを前提としています) で動作します:
import os
import matplotlib
if os.name == 'posix' and "DISPLAY" not in os.environ:
matplotlib.use('Agg')
https://stackoverflow.com/a/1325587/896111 を参照してください。
行 matplotlib.use('Agg')
に注意してください matplotlib
の最初のインポートの後に表示する必要があります (そうしないと、エラーが発生します)。