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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 00:22:08