1.使用pyinstaller打包Gooey GUI时出现编码错误 [打包指令 pyinstaller -F xxxx.py]
报错信息如下
记得打包时先不要关闭consloe,不然看不到报错信息,程序会死循环
Exception in thread Thread-1:
Traceback (most recent call last):
File "threading.py", line 932, in _bootstrap_inner
File "threading.py", line 870, in run
File "gooey\gui\processor.py", line 70, in _forward_stdout
File "gooey\gui\processor.py", line 84, in _extract_progress
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc4 in position 0: invalid continuation byte
解决方法:
修改Gooey包中processor.py文件
有两处需要修改
修改前
修改后
此时使用pyinstaller -F xxxx.py打包生成的exe运行正常
打包完成后记得修改回去!!!
2.程序中使用了FFmpy调用FFmepg 打包成exe后运行时会不断闪过调用FFmepg的cmd窗口
真的烦死!!!
有效解决方法[查文档永远的神,虽然查了一个晚上,呜呜呜
程序中使用到的ffmpy相关代码
找到ffmpy.py文件
来到run方法,找到如下段代码
可以看到其实是使用了subprocess包的Popen方法
我们可以查文档 附上地址
Popen方法中可以传入一个STARTUPINFO 可以控制是否显示cmd窗口
# 声明一个st
st = subprocess.STARTUPINFO()
st.dwFlags = subprocess.STARTF_USESHOWWINDOW
st.wShowWindow = subprocess.SW_HIDE
然后再run的那段代码中加入
如下
重新打包后就可以发现cmd窗口消失了
这里非常坑的是网上许多比较旧的资料里面声明st=subprocess.STARTUPINFO,这样子运行后会报_copy缺失self的问题[我踩坑了]
最后记得所有修改的包文件最好都还原
本日任务 完美解决!