Tkinter脚本转EXE后出现_tkinter.TclError文件找不到错误求助
解决PyInstaller打包tkfilebrowser程序时找不到图片资源的问题
这个问题我之前也碰到过,其实是PyInstaller打包时没把tkfilebrowser依赖的图片资源给带上导致的!
为什么会出现这个错误?
你代码里用的askopenfilename应该是来自tkfilebrowser库(不是tkinter标准库的同名函数),这个库为了美化文件选择框,自带了一些UI图标(比如报错里的file.png)。
当你直接运行.py文件时,Python能自动找到安装在site-packages里的tkfilebrowser/images文件夹;但用PyInstaller打包成EXE时,默认只会收集代码文件,不会自动把这类非代码的资源文件打包进去。当EXE运行时,会把程序解压到系统临时目录(就是你看到的C:\Users\MYNAME~1\AppData\Local\Temp\_MEI107362),但这个临时目录里缺少tkfilebrowser/images文件夹,自然就找不到图片了。
具体解决方法
方法一:用--add-data参数直接打包
- 先找到你Python环境中
tkfilebrowser的安装路径,一般在Python安装目录/Lib/site-packages/tkfilebrowser,里面有个images子文件夹。 - 打开命令行,用带
--add-data参数的PyInstaller命令打包:- Windows系统下(注意用分号分隔路径):
pyinstaller --add-data "C:\路径\到\tkfilebrowser\images;tkfilebrowser\images" 你的脚本名.py - 如果是Linux/macOS,把分号换成冒号:
pyinstaller --add-data "/路径/到/tkfilebrowser/images:tkfilebrowser/images" 你的脚本名.py
- Windows系统下(注意用分号分隔路径):
方法二:用.spec文件配置(更适合重复打包)
- 先生成默认的.spec文件:
pyinstaller 你的脚本名.py - 打开生成的
你的脚本名.spec文件,找到datas参数(如果没有就新增),添加资源路径配置:
(Windows路径用双反斜杠,或者用原始字符串datas=[ # 替换成你实际的tkfilebrowser/images路径 ('C:\\路径\\到\\tkfilebrowser\\images', 'tkfilebrowser\\images') ],r'C:\路径...') - 最后用spec文件重新打包:
pyinstaller 你的脚本名.spec
这样打包后的EXE就能正确找到需要的图片资源,不会再报错啦!
内容的提问来源于stack exchange,提问作者Jacob
相关产品推荐
相关产品推荐

