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