PyInstaller打包含tkinter tix的脚本找不到Tix包 如何打包为单exe
解决方案
第一步:修改Python脚本,添加路径适配代码
在导入tix之前添加以下代码,适配打包后的运行环境:
import os import sys from tkinter import * from tkinter import tix # 适配PyInstaller单exe打包环境 if getattr(sys, 'frozen', False): # 单exe运行时的资源临时解压目录 base_path = sys._MEIPASS # 告知tcl tix库的实际路径 os.environ['TIX_LIBRARY'] = os.path.join(base_path, 'tix8.4.3') root = tix.Tk() root.mainloop()
第二步:执行打包命令
使用--add-data参数将本地tix库目录打包进exe,Windows环境下命令如下:
pyinstaller -F --add-data "C:\Python39\tcl\tix8.4.3;tix8.4.3" 你的脚本名称.py
参数说明:
-F:生成单exe文件--add-data后面的内容分为两部分,分号前是你本地tix目录的实际路径,分号后是打包进exe后资源的存放相对路径,需要和脚本里设置的路径一致- 如果你是Linux/macOS环境,把分号替换为冒号,同时修改本地tix路径为对应系统的路径即可
可选:用spec文件固化配置(适合多次打包场景)
如果不想每次输入长命令,可以用spec文件配置打包规则:
- 生成初始spec文件:
pyi-makespec -F 你的脚本名称.py - 打开生成的
.spec文件,修改datas字段为:datas = [("C:\\Python39\\tcl\\tix8.4.3", "tix8.4.3")] - 保存后执行打包:
pyinstaller 你的脚本名称.spec
打包完成后生成的单exe就可以直接运行,不需要额外附带tix目录。
内容的提问来源于stack exchange,提问作者Chryron
相关产品推荐
相关产品推荐

