当显示不确定时,请使用matplotlib



在远程计算机上使用matplotlib(例如,在Travis CI上)时,我会遇到与未设置的显示环境变量相关的频繁运行时错误。根据建议,我在测试脚本开始时通过matplotlib.use设置了Agg后端,并确保没有呼叫show()。尽管如此,我仍然会遇到以下错误:

Traceback (most recent call last):
  File "/home/travis/anaconda/envs/testenv/lib/python2.7/site-packages/nose/case.py", line 197, in runTest
    self.test(*self.arg)
  File "/home/travis/build/pymc-devs/pymc/pymc/tests/test_plots.py", line 36, in test_multichain_plots
    forestplot(ptrace, vars=['early_mean', 'late_mean'])
  File "/home/travis/build/pymc-devs/pymc/pymc/plots.py", line 325, in forestplot
    interval_plot = subplot(gs[0])
  File "/home/travis/anaconda/envs/testenv/lib/python2.7/site-packages/matplotlib/pyplot.py", line 896, in subplot
    fig = gcf()
  File "/home/travis/anaconda/envs/testenv/lib/python2.7/site-packages/matplotlib/pyplot.py", line 450, in gcf
    return figure()
  File "/home/travis/anaconda/envs/testenv/lib/python2.7/site-packages/matplotlib/pyplot.py", line 423, in figure
    **kwargs)
  File "/home/travis/anaconda/envs/testenv/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py", line 31, in new_figure_manager
    return new_figure_manager_given_figure(num, thisFig)
  File "/home/travis/anaconda/envs/testenv/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py", line 38, in new_figure_manager_given_figure
    canvas = FigureCanvasQTAgg(figure)
  File "/home/travis/anaconda/envs/testenv/lib/python2.7/site-packages/matplotlib/backends/backend_qt4agg.py", line 70, in __init__
    FigureCanvasQT.__init__( self, figure )
  File "/home/travis/anaconda/envs/testenv/lib/python2.7/site-packages/matplotlib/backends/backend_qt4.py", line 207, in __init__
    _create_qApp()
  File "/home/travis/anaconda/envs/testenv/lib/python2.7/site-packages/matplotlib/backends/backend_qt4.py", line 62, in _create_qApp
    raise RuntimeError('Invalid DISPLAY variable')
RuntimeError: Invalid DISPLAY variable

是否还有其他建议来避免此?

使用xvfb工作,请参见Travis的Gui&无头浏览器测试文档。

P.S。matplotlib.use('Agg')技巧对我有用。

最新更新