为什么这会起作用:
...
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,因为我喜欢了解代码来自哪些模块的上下文。
发布于 2019-10-13 21:49:47
PIL的__init__.py是一个空的存根,这是很常见的。它不会导入所有模块。
因此,当您尝试:from PIL import ImageTk它时,在PIL包文件夹中搜索并找到文件ImageTk.py并导入该文件。
但是,当您尝试:PIL.ImageTk时,您实际上是在对PIL模块进行属性查找。
为了避免混淆,您可以这样做:
from PIL import Image as Pil_image, ImageTk as Pil_imageTk
所以你给类起了一个名字,告诉你它是从哪里来的。
https://stackoverflow.com/questions/58363668
复制相似问题