Python + Gooey + FFmepg(FFmpy) 开发记录

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方法
我们可以查文档 附上地址

https://docs.python.org/zh-cn/3/library/subprocess.html

Popen方法中可以传入一个STARTUPINFO 可以控制是否显示cmd窗口

# 声明一个st 
st = subprocess.STARTUPINFO() 
st.dwFlags = subprocess.STARTF_USESHOWWINDOW
st.wShowWindow = subprocess.SW_HIDE

然后再run的那段代码中加入
如下

重新打包后就可以发现cmd窗口消失了
这里非常坑的是网上许多比较旧的资料里面声明st=subprocess.STARTUPINFO,这样子运行后会报_copy缺失self的问题[我踩坑了]

最后记得所有修改的包文件最好都还原

本日任务 完美解决!

posted @ 2021-09-14 20:00  KingRainGrey  阅读(680)  评论(0)    收藏  举报