6

I wanted to start using Tkinter with python and have following code:

#!/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()

But when I try to execute it, it just gives me this error:

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

I installed PIL with python-pip and my OS is ubuntu 12.04 and my python version is 2.7.3

falsetru
  • 357,413
  • 63
  • 732
  • 636
BoJack Horseman
  • 4,406
  • 13
  • 38
  • 70

4 Answers4

18

You need to install ImageTk module.

In debian, ubuntu, you can use following command to install it:

sudo apt-get install python-imaging-tk

UPDATE

If you're using recent version of ubuntu (16.04+), the package name changed.

  • python-pil.imagetk (Python 2.x)
  • python3-pil.imagetk (Python 3.x)
falsetru
  • 357,413
  • 63
  • 732
  • 636
  • 1
    Can it be installed via pip? – dm76 Jun 09 '15 at 18:35
  • I already have that package, Version: 2.6.1-2, and am still getting the error. – appas Sep 16 '15 at 03:50
  • @appas, i suspect you're using non-system version of Python. Otherwise, please post a separated question. – falsetru Sep 16 '15 at 06:22
  • @falsetru what do you mean by "non-system version"? – appas Sep 18 '15 at 18:09
  • @appas, I meant - system version: Python installed with apt-get/dpkg/yum/rpm/.... – falsetru Sep 18 '15 at 20:10
  • Ok, well my Python is Version: 2.7.9-1, and both that package and `python-imaging-tk` are within package management (installed via apt). Now this problem is extra strange, because I do not recall updating any of the packages involved between when the application at fault last worked, and now that it yields this error. – appas Sep 21 '15 at 07:40
  • 1
    I had to use @SarcasticSully's answer: `sudo apt install python3-pil.imagetk` on my Ubuntu 16.04.1 LTS. – MarkHu Dec 17 '16 at 16:34
  • @MarkHu, Thank you for the comment. I updated the answer after testing in Ubuntu 16.10. I didn't expect package name would change at the time of posting the answer. :) – falsetru Dec 17 '16 at 17:01
4

As noted by falsetru, you need to install the ImageTk module first: it doesn't automatically come with Python. To do this, run one of the commands below:

If you're using Python 2.x, use this command:

sudo apt-get install python-imaging-tk

If you're using Python 3.x, use this command:

sudo apt-get install python3-pil.imagetk
SarcasticSully
  • 442
  • 4
  • 14
  • Thanks for the tip. Sad this hasn't been solved even on new distros like Ubuntu 16.04.1 LTS. – MarkHu Dec 17 '16 at 16:35
0

Just to add to the answers here, on Ubuntu 16.04 the package name is slightly different (even for Python 2):

sudo apt-get install python-pil.imagetk

Fiver
  • 9,909
  • 9
  • 43
  • 63
0

The most universal solution is:

python -m pip install image

Should work for Python 2 and 3 and also for Windows. PIP will install all dependencies.

Nux
  • 9,276
  • 5
  • 59
  • 72