繁体   English   中英

Jupyter与IPython:Matplotlib-没有名为Tkinter的模块

[英]Jupyter vs IPython: Matplotlib - No module named Tkinter

我在名为OpenQuake的程序中使用Python 3.5。 执行以下行时,出现导入错误“ No module name'tkinter'”。

import matplotlib.pyplot as plt

我安装了jupyter并执行了相同的程序,并且工作正常。 以下是快照。 在此处输入图片说明 我使用IPython(我相信它与jupyter一起提供)进行了重新检查,以使用相同的追溯获得完全相同的原始错误。 以下是回溯。

Traceback (most recent call last):
  File "<ipython-input-22-964337a9f103>", line 2, in <module>
    import matplotlib.pyplot as plt
  File "C:\Program Files\OpenQuake Engine\lib\site-packages\matplotlib\pyplot.py", line 114, in <module>
    _backend_mod, new_figure_manager, draw_if_interactive, _show = pylab_setup()
  File "C:\Program Files\OpenQuake Engine\lib\site-packages\matplotlib\backends\__init__.py", line 32, in pylab_setup
    globals(),locals(),[backend_name],0)
  File "C:\Program Files\OpenQuake Engine\lib\site-packages\matplotlib\backends\backend_tkagg.py", line 6, in <module>
    from matplotlib.externals.six.moves import tkinter as Tk
  File "C:\Program Files\OpenQuake Engine\lib\site-packages\matplotlib\externals\six.py", line 90, in __get__
    result = self._resolve()
  File "C:\Program Files\OpenQuake Engine\lib\site-packages\matplotlib\externals\six.py", line 113, in _resolve
    return _import_module(self.mod)
  File "C:\Program Files\OpenQuake Engine\lib\site-packages\matplotlib\externals\six.py", line 80, in _import_module
    __import__(name)
ImportError: No module named 'tkinter'

在两种情况下,所引用的matplotlib模块都是相同的。

总结一下:

  1. 上面的代码片段在使用Python和IPython时给出了导入错误。
  2. 该代码段在Jupyter中成功执行。

有人可以解释为什么会这样吗?

matplotlib使用不同的后端。 在Jupyter中,通常使用inlinenotebook 在另一方面,IPython的默认(使用TK后端backend_tkagg.py ),并因此尝试导入tkinter ,未安装。 Jupyter不需要此后端,因此不会尝试导入它。

Jupyter在浏览器中显示绘图结果,但是IPython在终端上运行,并且需要GUI库(例如TKinter)进行显示。 这使得需要不同的后弯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM