如何检查matplotlib的pylab后端是否内联运行?

Sta*_*pol 10 python matplotlib ipython ipython-notebook

我正在修改一个使用matplotlib绘制一些特殊图形的python模块.

现在,这个模块只是将所有数字保存为文件.

我希望能够在ipython笔记本中工作时导入模块并查看结果"内联",另一方面我希望保留默认功能,将模块保存为文件,当模块导入所有其他模块时案例.

所以我需要以某种方式检查模块是否在ipython笔记本中导入并且pylab是否内联操作.

我怎么检查这个?

min*_*nrk 14

您可以使用以下命令检查matplotlib后端:

import matplotlib
matplotlib.get_backend()
Run Code Online (Sandbox Code Playgroud)

要特别检查内联matplotlib:

mpl_is_inline = 'inline' in matplotlib.get_backend()
Run Code Online (Sandbox Code Playgroud)

请注意,使用IPython笔记本,无论活动的matplotlib后端如何,您始终可以显示内嵌数字:

display(fig)
Run Code Online (Sandbox Code Playgroud)


Ioa*_*dis 10

尝试怎么样:

try:
    cfg = get_ipython().config
    print('Called by IPython.')

    # Caution: cfg is an IPython.config.loader.Config
    if cfg['IPKernelApp']:
        print('Within IPython QtConsole.')

        try:
            if cfg['IPKernelApp']['pylab'] == 'inline':
                print('inline pylab loaded.')
            else:
                print('pylab loaded, but not in inline mode.')
        except:
            print('pylab not loaded.')
    elif cfg['TerminalIPythonApp']:
        try:
            if cfg['TerminalIPythonApp']['pylab'] == 'inline':
                print('inline pylab loaded.')
            else:
                print('pylab loaded, but not in inline mode.')
        except:
            print('pylab not loaded.')
except:
    print('Not called by IPython.')
Run Code Online (Sandbox Code Playgroud)