%Matplotlib-AttributeError:“ NoneType”对象没有属性“ lower”

时间:2019-07-26 06:26:13

标签: python python-3.x matplotlib

我正在IPython中运行%matplotlib,但是有一个 AttributeError:'NoneType'对象没有属性'lower'

Python 3.7; MacOs Mojave 10.14.6(18G84); 康达matplotlib:3.1.1 pypi_0 pypi

In [13]: import matplotlib                                                      

In [14]: import matplotlib.pyplot as plt                                        

In [15]: %matplotlib                                                            
---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-15-a49a4afc47c5> in <module>
----> 1 get_ipython().run_line_magic('matplotlib', '')

//anaconda3/lib/python3.7/site-packages/IPython/core/interactiveshell.py in run_line_magic(self, magic_name, line, _stack_depth)
   2311                 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
   2312             with self.builtin_trap:
-> 2313                 result = fn(*args, **kwargs)
   2314             return result
   2315 

<//anaconda3/lib/python3.7/site-packages/decorator.py:decorator-gen-108> in matplotlib(self, line)

//anaconda3/lib/python3.7/site-packages/IPython/core/magic.py in <lambda>(f, *a, **k)
    185     # but it's overkill for just that one bit of state.
    186     def magic_deco(arg):
--> 187         call = lambda f, *a, **k: f(*a, **k)
    188 
    189         if callable(arg):

//anaconda3/lib/python3.7/site-packages/IPython/core/magics/pylab.py in matplotlib(self, line)
     97             print("Available matplotlib backends: %s" % backends_list)
     98         else:
---> 99             gui, backend = self.shell.enable_matplotlib(args.gui.lower())
    100             self._show_matplotlib_backend(args.gui, backend)
    101 

AttributeError: 'NoneType' object has no attribute 'lower'

2 个答案:

答案 0 :(得分:0)

根据the docs %matplotlib可以提供一个后端(例如,包括“内联”,“笔记本”,“ gtk”,“ qt4”等)。如果未提供后端选项,则使用默认选项。看来这在某些版本的ipython中已损坏(请参见herehere)。我在某些版本的%matplotlib的{​​{1}}命令中也遇到了麻烦。

因此,请尝试更新matplotlib和/或ipython,看看是否可以解决问题。

或者,使用matplotlib获取可用选项,然后选择一个并尝试(例如):

%matplotlib --list

如果您遇到一些花哨的绘图工作,有时在特定情况下一个后端将无法正常工作,因此您可以测试一些后端并使用有效的(或可用的)后端。另外,如果您想直接使用图形窗口执行操作(例如在屏幕上四处移动图形),则这些窗口将成为后端特定的。如果您使用的是%matplotlib qt ,请尝试jupyter notebook%matplotlib inline

答案 1 :(得分:0)

在此处收到Jupyter Lab的类似错误消息。通过放置后端魔术为我解决了

myFunction(double)

在实际进行绘图的单元格中。