执行Python脚本时出错AttributeError:' NoneType'对象没有属性' run_line_magic'

时间:2016-11-21 13:43:26

标签: python matplotlib ipython

我在以下python代码上遇到错误。我是从脚本运行的。我正在使用python 2.7.12。

import os
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from IPython import get_ipython
ipython_shell = get_ipython()
get_ipython().run_line_magic('matplotlib', 'inline')

我尝试过使用py和jpy扩展。试图改变导入matplotlib的语法,但没有任何作用。

使用python运行的错误显示

Traceback (most recent call last):
  File "LR.jpy", line 7, in <module>
    get_ipython().run_line_magic('matplotlib', 'inline')
AttributeError: 'NoneType' object has no attribute 'run_line_magic'

使用iPython show

运行时出错
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
C:\Users\Roland\Google Drive\Work\Machine Learning\machine-learning-ex1\ex1\LR.jpy in <module>()
      5 from IPython import get_ipython
      6 ipython_shell = get_ipython()
----> 7 get_ipython().run_line_magic('matplotlib', 'inline')

c:\program files\python\lib\site-packages\IPython\core\interactiveshell.pyc in run_line_magic(self, magic_name, line)
   2077                 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
   2078             with self.builtin_trap:
-> 2079                 result = fn(*args,**kwargs)
   2080             return result
   2081

<decorator-gen-105> in matplotlib(self, line)

c:\program files\python\lib\site-packages\IPython\core\magic.pyc in <lambda>(f, *a, **k)
    186     # but it's overkill for just that one bit of state.
    187     def magic_deco(arg):
--> 188         call = lambda f, *a, **k: f(*a, **k)
    189
    190         if callable(arg):

c:\program files\python\lib\site-packages\IPython\core\magics\pylab.pyc in matplotlib(self, line)
     98             print("Available matplotlib backends: %s" % backends_list)
     99         else:
--> 100             gui, backend = self.shell.enable_matplotlib(args.gui)
    101             self._show_matplotlib_backend(args.gui, backend)
    102

c:\program files\python\lib\site-packages\IPython\core\interactiveshell.pyc in enable_matplotlib(self, gui)
   2945                 gui, backend = pt.find_gui_and_backend(self.pylab_gui_select)
   2946
-> 2947         pt.activate_matplotlib(backend)
   2948         pt.configure_inline_support(self, backend)
   2949

c:\program files\python\lib\site-packages\IPython\core\pylabtools.pyc in activate_matplotlib(backend)
    293
    294     import matplotlib.pyplot
--> 295     matplotlib.pyplot.switch_backend(backend)
    296
    297     # This must be imported last in the matplotlib series, after

c:\program files\python\lib\site-packages\matplotlib\pyplot.pyc in switch_backend(newbackend)
    230     matplotlib.use(newbackend, warn=False, force=True)
    231     from matplotlib.backends import pylab_setup
--> 232     _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
    233
    234

c:\program files\python\lib\site-packages\matplotlib\backends\__init__.pyc in pylab_setup()
     30     # imports. 0 means only perform absolute imports.
     31     backend_mod = __import__(backend_name,
---> 32                              globals(),locals(),[backend_name],0)
     33
     34     # Things we pull in from all backends

ImportError: No module named ipykernel.pylab.backend_inline

修改

安装ipykernel后尝试使用ipython运行脚本会给我跟进错误

---------------------------------------------------------------------------
UnknownBackend                            Traceback (most recent call last)
C:\Users\Roland\Google Drive\Work\Machine Learning\machine-learning-ex1\ex1\LR.py in <module>()
      5 from IPython import get_ipython
      6 ipython_shell = get_ipython()
----> 7 get_ipython().run_line_magic('matplotlib', 'inline')

c:\program files\python\lib\site-packages\IPython\core\interactiveshell.pyc in run_line_magic(self, magic_name, line)
   2077                 kwargs['local_ns'] = sys._getframe(stack_depth).f_locals
   2078             with self.builtin_trap:
-> 2079                 result = fn(*args,**kwargs)
   2080             return result
   2081

<decorator-gen-105> in matplotlib(self, line)

c:\program files\python\lib\site-packages\IPython\core\magic.pyc in <lambda>(f, *a, **k)
    186     # but it's overkill for just that one bit of state.
    187     def magic_deco(arg):
--> 188         call = lambda f, *a, **k: f(*a, **k)
    189
    190         if callable(arg):

c:\program files\python\lib\site-packages\IPython\core\magics\pylab.pyc in matplotlib(self, line)
     98             print("Available matplotlib backends: %s" % backends_list)
     99         else:
--> 100             gui, backend = self.shell.enable_matplotlib(args.gui)
    101             self._show_matplotlib_backend(args.gui, backend)
    102

c:\program files\python\lib\site-packages\IPython\core\interactiveshell.pyc in enable_matplotlib(self, gui)
   2950         # Now we must activate the gui pylab wants to use, and fix %run to take
   2951         # plot updates into account
-> 2952         self.enable_gui(gui)
   2953         self.magics_manager.registry['ExecutionMagics'].default_runner = \
   2954             pt.mpl_runner(self.safe_execfile)

c:\program files\python\lib\site-packages\IPython\terminal\interactiveshell.pyc in enable_gui(self, gui)
    450     def enable_gui(self, gui=None):
    451         if gui:
--> 452             self._inputhook = get_inputhook_func(gui)
    453         else:
    454             self._inputhook = None

c:\program files\python\lib\site-packages\IPython\terminal\pt_inputhooks\__init__.pyc in get_inputhook_func(gui)
     36
     37     if gui not in backends:
---> 38         raise UnknownBackend(gui)
     39
     40     if gui in aliases:

UnknownBackend: No event loop integration for u'inline'. Supported event loops are: qt, qt4, qt5, gtk, gtk2, gtk3, tk, wx, pyglet, glut, osx

2 个答案:

答案 0 :(得分:0)

在第一种情况下,如果您正在运行IPython

,则只返回非实例
Help on function get_ipython in module IPython.core.getipython:

get_ipython()
    Get the global InteractiveShell instance.

    Returns None if no InteractiveShell instance is registered.

在第二种情况下,内联后端作为ipykernel的一部分提供,您可能尚未安装。 inline后端仅适用于笔记本和qtconsole,而不是普通提示。

答案 1 :(得分:0)

我的问题是在终端,无法显示情节图像。我需要使用jupyter笔记本。我安装了jupyter笔记本并使用以下命令运行它。

jupyter notebook

之后,浏览器中的新选项卡将打开。右上角有一个按钮。

enter image description here

我选择了python 2.在新标签中有单元格。在每个单元格上,可以粘贴和运行代码。这解决了我的问题。