为什么会起作用:
...
from PIL import Image, ImageTk
....
img = ImageTk.PhotoImage(Image.open("One.jpg"))
...
但是这个
...
import PIL as p
....
img = p.ImageTk.PhotoImage(p.Image.open("One.jpg"))
...
告诉我module 'PIL' has no attribute 'ImageTk'
?
我认为我可以将PIL导入为p,然后在代码中使用PIL中的任何内容,只要它以p开头即可。
我想避免使用from PIL import Image, ImageTk
,因为我希望了解一些代码源于哪些模块。
答案 0 :(得分:1)
PIL的__init__.py
是一个空的存根,这很常见。不会导入所有模块。
因此,当您尝试:from PIL import ImageTk
时,它将在PIL软件包文件夹中搜索并找到ImageTk.py文件并将其导入。
但是,当您尝试使用PIL.ImageTk
时,您实际上是在PIL模块上进行属性查找。
为避免混乱,您可以这样做:
from PIL import Image as Pil_image, ImageTk as Pil_imageTk
这样您就可以为该类命名,以告诉您该类来自何处。