Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Make matplotlib fail more gracefully in headless environments #6739

Closed
Milestone
@ngoldbaum

Description

@ngoldbaum

This is reproducible on any headless environment using matplotlib 1.5.1. On my system, the following script:

frommatplotlibimportpyplotaspltplt.plot([1,2], [1,2])

Will produce the following traceback:

---------------------------------------------------------------------------TclError                                  Traceback (most recent call last)<ipython-input-2-8dd816f9ddc7> in <module>()----> 1 plt.plot([1, 2], [1, 2])/home/goldbaum/.virtualenvs/yt-dev/local/lib/python2.7/site-packages/matplotlib/pyplot.pyc in plot(*args, **kwargs)   3145 @_autogen_docstring(Axes.plot)   3146 def plot(*args, **kwargs):-> 3147     ax = gca()   3148     # allow callers to override the hold state by passing hold=True|False   3149     washold = ax.ishold()/home/goldbaum/.virtualenvs/yt-dev/local/lib/python2.7/site-packages/matplotlib/pyplot.pyc in gca(**kwargs)    926     matplotlib.figure.Figure.gca : The figure's gca method.    927     """--> 928     return gcf().gca(**kwargs)    929    930 # More ways of creating axes:/home/goldbaum/.virtualenvs/yt-dev/local/lib/python2.7/site-packages/matplotlib/pyplot.pyc in gcf()    576         return figManager.canvas.figure    577     else:--> 578         return figure()    579    580/home/goldbaum/.virtualenvs/yt-dev/local/lib/python2.7/site-packages/matplotlib/pyplot.pyc in figure(num, figsize, dpi, facecolor, edgecolor, frameon, FigureClass, **kwargs)    525                                         frameon=frameon,    526                                         FigureClass=FigureClass,--> 527                                         **kwargs)    528    529         if figLabel:/home/goldbaum/.virtualenvs/yt-dev/local/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.pyc in new_figure_manager(num, *args, **kwargs)     82     FigureClass = kwargs.pop('FigureClass', Figure)     83     figure = FigureClass(*args, **kwargs)---> 84     return new_figure_manager_given_figure(num, figure)     85     86/home/goldbaum/.virtualenvs/yt-dev/local/lib/python2.7/site-packages/matplotlib/backends/backend_tkagg.pyc in new_figure_manager_given_figure(num, figure)     90     """     91     _focus = windowing.FocusManager()---> 92     window = Tk.Tk()     93     window.withdraw()     94/usr/lib/python2.7/lib-tk/Tkinter.pyc in __init__(self, screenName, baseName, className, useTk, sync, use)   1765                 baseName = baseName + ext   1766         interactive = 0-> 1767         self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use)   1768         if useTk:   1769             self._loadtk()TclError: no display name and no $DISPLAY environment variable

I think it would be much nicer if backends somehow detected these sorts of errors, fell back to the Agg backend (probably with a warning) and then goes ahead and makes the plot.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


      [8]ページ先頭

      ©2009-2025 Movatter.jp