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的问题[我踩坑了]

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

本日任务 完美解决!


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM