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的問題[我踩坑了]
最后記得所有修改的包文件最好都還原
本日任務 完美解決!