0x00 环境:
- win10-64
- python3.8.2 32位
pyinstaller -Fw test.py --noupx # 打包后,exe 文件启动失败,报错:failed to execute script
0x01 查找问题过程
- 到
./build/test/warn-test.txt中查看有 Tix 引入失败missing module named Tix - imported by TkinterDnD2.TkinterDnD (optional) missing module named Tkinter - imported by TkinterDnD2.TkinterDnD (optional) - 通过
pyinstaller -D -w test.py --noupx命令打包一次,然后进入./dist/test/中打开命令行,从命令行中启动 exe 文件,提示:_Tkinter TclError can't find package Tix - 通过
pyinstaller -D -w --hidden-import=Tix --noupx test.py仍然报同样错误_Tkinter TclError can't find package Tix
0x02 解决方法
经查,tix 打包需附带额外资源 –add-data=…tix8.4.3;tix8.4.3
打包时加上 --add-data=D:\software\Python\Python-3.8.2\tcl\tix8.4.3;tix8.4.3 (注:windows以;分割,linux以:分割)
即:
pyinstaller -F -w --add-data=D:\software\Python\Python-3.8.2\tcl\tix8.4.3;tix8.4.3 test.py