Tkinter导入非路径依赖图片失败,求助解决权限拒绝错误
解决图片路径依赖与PermissionError权限拒绝问题
问题场景
本地设备正常显示的图片在其他设备无法加载(因路径依赖),调整路径代码后触发PermissionError权限拒绝错误,相关代码及报错如下:
原代码
dir_lion = os.path.dirname(__file__) os.path.join(dir_lion, "image", "lion.jpeg") image_lion = Image.open(dir_lion) image_lion_tk = ImageTk.PhotoImage(image_lion) label_image_lion = ttk.Label(main_frame, text='lion', image=image_lion_tk)
报错信息
Traceback (most recent call last): File "文件路径", line 81, in <module> image_gol = Image.open(dir_gol) ^^^^^^^^^^^^^^^^^^^ File "文件路径", line 3243, in open fp = builtins.open(filename, "rb") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ PermissionError: [Errno 13] 权限拒绝: "文件路径"
错误原因
- 路径生成未赋值:调用
os.path.join拼接出了正确的图片路径,但未将结果保存到变量中,后续Image.open传入的是脚本所在目录路径而非图片文件路径。 - 错误打开目录:尝试以二进制读模式打开文件夹,操作系统会拒绝此操作,触发权限错误。
修正方案
将拼接后的图片路径赋值给变量,再传入Image.open:
import os from PIL import Image, ImageTk import tkinter.ttk as ttk # 拼接完整图片路径并保存 dir_lion = os.path.dirname(__file__) image_path = os.path.join(dir_lion, "image", "lion.jpeg") # 打开图片文件而非目录 image_lion = Image.open(image_path) image_lion_tk = ImageTk.PhotoImage(image_lion) label_image_lion = ttk.Label(main_frame, text='lion', image=image_lion_tk) # 保留PhotoImage对象引用,避免图片无法显示 label_image_lion.image = image_lion_tk
额外提示
- 确保
image文件夹与脚本同级存在,且lion.jpeg文件实际存在。 - 跨设备使用时,需保证项目文件夹结构一致,避免因绝对路径差异导致加载失败。
内容的提问来源于stack exchange,提问作者user22311919
相关产品推荐
相关产品推荐

