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

PyInstaller打包含sv-ttk主题的Python脚本后exe执行报错求助

解决PyInstaller打包sv-ttk时找不到sv.tcl文件的问题

问题原因

sv_ttk依赖的sv.tcl等资源文件未被PyInstaller自动收集,导致程序运行时在临时目录中找不到这些文件。

解决方法

方法1:修改打包命令,添加sv_ttk资源目录

找到Python环境中sv_ttk的安装目录(通常在site-packages/sv_ttk下,虚拟环境则在venv/Lib/site-packages/sv_ttk),在打包命令中新增--add-data参数指定该目录:

pyinstaller.exe --onefile --windowed --icon=dice.ico --add-data "dice.ico;." --add-data "实际路径/sv_ttk;sv_ttk" -n number_generator --hidden-import=sv_ttk gui.py

替换实际路径为你的sv_ttk所在目录,比如C:\Python311\Lib\site-packages或venv/Lib/site-packages。

方法2:在代码中适配PyInstaller临时路径

在gui.py开头添加以下代码,让程序在打包后能正确找到sv_ttk的资源:

import os
import sys
import tkinter
import sv_ttk

# 处理PyInstaller打包后的临时路径
if hasattr(sys, '_MEIPASS'):
    sv_ttk_resource_path = os.path.join(sys._MEIPASS, 'sv_ttk')
    # 将资源目录添加到Tcl的搜索路径
    tkinter.Tcl().eval(f'lappend auto_path "{sv_ttk_resource_path}"')

之后再用方法1中的打包命令执行打包即可。

方法3:通过.spec文件手动配置资源

  1. 先生成.spec文件:
pyinstaller.exe --onefile --windowed --icon=dice.ico --add-data "dice.ico;." -n number_generator --hidden-import=sv_ttk gui.py --specpath .
  1. 打开生成的number_generator.spec,在datas列表中添加sv_ttk资源:
datas = [
    ('dice.ico', '.'),
    ('实际路径/sv_ttk', 'sv_ttk'),
]
  1. 用.spec文件重新打包:
pyinstaller.exe number_generator.spec

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:45:13