Why it doesn't work?

作業のメモ、記録をブログに残しています。

Python ネームスペースのコンフリクトを解消する

from PIL import Image
from tkinter import *
...
fname = "downloaded.png"
im = Image.open(fname)
im.show()

みたいなプログラムを買いたら、下記のようなエラーが発生した。

Exception in Tkinter callback
Traceback (most recent call last):
File "C:\Python37-32\lib\tkinter\__init__.py", line 1702, in __call__
return self.func(*args)
File "show_image.py", line 76, in show_image
im = Image.open(fname)
AttributeError: type object 'Image' has no attribute 'open'

3系でImageモジュールのインターフェースが変わったのかな?とも思いましたが、エラーをよく見るとtkinterモジュールでエラーが発生しています。
調べてみると、ネームスペースのコンフリクトが発生しているようでした。
stackoverflow.com

で、以下のように修正。

import PIL.Image
from tkinter import *
...
fname = "downloaded.png"
im = PIL.Image.open(fname)
im.show()

無事、画像が表示されました。
久しぶりにブログの趣旨に沿った更新だなと思いつつ、今日はここまで。