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)