You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用tkinter时Pillow报AttributeError:'Image'无'open'属性怎么办?

解决AttributeError: type object 'Image' has no attribute 'open'问题

问题原因

你代码里同时使用了from PIL import Image和from tkinter import *,tkinter模块内置了一个同名的Image类,后者会覆盖PIL的Image类,导致你调用的Image.open()实际是tkinter的Image,而这个类并没有open方法,因此触发报错。

解决办法

方法一:避免导入tkinter全部内容

将from tkinter import *替换为import tkinter as tk,后续tkinter相关组件都用tk.前缀调用,这样就不会和PIL的Image冲突:

import tkinter as tk
import sys
from PIL import Image
from datetime import datetime
import time

# 示例:tkinter组件调用方式
root = tk.Tk()
label = tk.Label(root, text="示例")

方法二:重命名PIL的Image导入

如果不想修改tkinter的导入方式,将PIL的Image重命名后使用:

from PIL import Image as PILImage

# 调用时改用重命名后的类
img = PILImage.open(img_filename)

方法三:重新导入PIL的Image(不推荐)

在from tkinter import *之后,再次导入PIL的Image,覆盖tkinter的同名类:

from tkinter import *
from PIL import Image  # 重新导入,覆盖tkinter的Image

额外建议

PIL已停止维护,现在主流使用的是Pillow(PIL的分支),建议卸载多余的PIL包,只保留Pillow避免冲突:

pip uninstall PIL
pip install --upgrade pillow

内容的提问来源于stack exchange,提问作者unreal 8 usher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 08:00:36