ImportError:没有名为 _imagingtk 的模块

Posted

技术标签:

【中文标题】ImportError:没有名为 _imagingtk 的模块【英文标题】:ImportError: No module named _imagingtk 【发布时间】:2014-05-12 09:05:23 【问题描述】:

我想开始使用带有 python 的 Tkinter 并有以下代码:

#!/usr/bin/python

from Tkinter import *
from PIL import ImageTk, Image

top = Tk()
dir(top)
top.title("Erstes Frame")

erstesFrame = Frame(top, height=250, width=250)
erstesFrame.pack_propagate(0)
erstesFrame.pack()

img = ImageTk.PhotoImage(Image.open("mario.gif"))

erstesBild = Label(erstesFrame, image = img)

erstesBild.pack()

top.mainloop()

但是当我尝试执行它时,它只会给我这个错误:

Traceback (most recent call last):
  File "ToDoAPP.py", line 14, in <module>
    img = ImageTk.PhotoImage(Image.open("mario.gif"))
  File "/usr/local/lib/python2.7/dist-packages/PIL/ImageTk.py", line 116, in __init__
    self.paste(image)
  File "/usr/local/lib/python2.7/dist-packages/PIL/ImageTk.py", line 181, in paste
    import _imagingtk
ImportError: No module named _imagingtk

我用 python-pip 安装了 PIL,我的操作系统是 ubuntu 12.04,我的 python 版本是 2.7.3

【问题讨论】:

【参考方案1】:

你需要安装ImageTk模块。

在debian、ubuntu中,可以使用以下命令安装:

sudo apt-get install python-imaging-tk

更新

如果您使用的是最新版本的 ubuntu (16.04+),则软件包名称已更改。

python-pil.imagetk (Python 2.x) python3-pil.imagetk (Python 3.x)

【讨论】:

可以通过pip安装吗? 我已经有那个包,版本:2.6.1-2,但仍然收到错误。 @appas,我怀疑您使用的是非系统版本的 Python。否则,请发布一个单独的问题。 @falsetru “非系统版本”是什么意思? 我不得不在我的 Ubuntu 16.04.1 LTS 上使用 @SarcasticSully 的答案:sudo apt install python3-pil.imagetk【参考方案2】:

正如 falsetru 所指出的,您需要先安装 ImageTk 模块:它不会自动随 Python 一起提供。为此,请运行以下命令之一:

如果您使用的是 Python 2.x,请使用以下命令:

sudo apt-get install python-imaging-tk

如果您使用的是 Python 3.x,请使用以下命令:

sudo apt-get install python3-pil.imagetk

【讨论】:

感谢您的提示。遗憾的是,即使在 Ubuntu 16.04.1 LTS 等新发行版上也没有解决这个问题。【参考方案3】:

只是为了在此处添加答案,在 Ubuntu 16.04 上,包名称略有不同(即使对于 Python 2):

sudo apt-get install python-pil.imagetk

【讨论】:

【参考方案4】:

最通用的解决方案是:

python -m pip install image

应该适用于 Python 2 和 3 以及 Windows。 PIP 将安装所有依赖项。

【讨论】:

以上是关于ImportError:没有名为 _imagingtk 的模块的主要内容,如果未能解决你的问题,请参考以下文章

ImportError:没有名为[重复]的模块

ImportError:没有名为包的模块

ImportError:没有名为 _imagingtk 的模块

ImportError:没有名为 _mysql 的模块

ImportError:没有模块名为六

ImportError:没有名为 cryptography.hazmat.bindings._openssl 的模块