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

使用PyInstaller打包Tkinter应用后双击.exe报错:找不到图片文件

解决PyInstaller打包Tkinter应用后图片找不到的问题

问题根源

用pyinstaller --onefile打包时,程序运行会把资源临时解压到系统临时目录(比如C:\Users\<用户名>\AppData\Local\Temp\_MEIXXXXXX),双击exe时的当前工作目录不是exe所在文件夹,直接用相对路径找图片肯定找不到;而VSCode终端运行时,当前工作目录是项目根目录,所以能正常加载图片。

解决方案1:将图片打包进exe(推荐)

通过sys._MEIPASS获取PyInstaller临时解压目录,修改图片路径处理逻辑:

步骤1:修改代码中的图片路径

在intro.py开头添加路径处理代码:

import os
import sys

def get_resource_path(filename):
    # 判断是否是PyInstaller打包后的环境
    if hasattr(sys, '_MEIPASS'):
        return os.path.join(sys._MEIPASS, filename)
    # 开发环境下,返回当前文件所在目录的同级路径
    return os.path.join(os.path.dirname(os.path.abspath(__file__)), filename)

然后修改create_widgets里的图片打开代码:

# Titulo
title_image_path = get_resource_path("FuelTrackRootTitle.png")
title_image = Image.open(title_image_path)
title_image_tk = ImageTk.PhotoImage(title_image)
titulito = ttk.Label(self, image=title_image_tk, background='white')
titulito.image = title_image_tk
titulito.place(relx=0.5, rely=0.7, anchor='center')

# Logo
icon_image_path = get_resource_path("FuelTrackIconImage.png")
icon_image = Image.open(icon_image_path).resize((300,300))
icon_image_tk = ImageTk.PhotoImage(icon_image)
logo = ttk.Label(self, image=icon_image_tk, background='white')
logo.image = icon_image_tk
logo.place(relx=0.5, rely=0.36, anchor='center')

步骤2:重新打包时指定图片资源

用PyInstaller的--add-data参数把图片打包进去,命令改成:

pyinstaller --onefile --add-data "FuelTrackRootTitle.png;." --add-data "FuelTrackIconImage.png;." main.py

(Windows系统用;分隔路径,Linux/macOS用:)

解决方案2:让图片和exe放在同一目录

如果不想把图片打包进exe,想让用户和exe一起下载,就获取exe所在的真实目录,而不是当前工作目录:

修改路径处理函数:

import os
import sys

def get_resource_path(filename):
    # 获取exe所在目录
    exe_dir = os.path.dirname(os.path.abspath(sys.executable))
    return os.path.join(exe_dir, filename)

然后同样替换Image.open的路径,打包时不需要--add-data参数,打包后把图片复制到dist文件夹和exe放在一起即可。

验证方法

打包后,把exe移动到任意文件夹(方案1无需带图片,方案2要把图片和exe放一起),双击运行测试,应该不会再报找不到文件的错误。

内容的提问来源于stack exchange,提问作者Kama Vector

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 06:52:53