pywebview gui='cef' 生成app報錯—— 中斷點 已到達中斷點


  pywebview是一個輕量級跨平台包裝器,允許在其自己的本機GUI窗口中顯示HTML內容。它提供了桌面應用程序中Web技術的強大功能,隱藏了GUI基於瀏覽器的事實。這個玩意兒好啊,可以直接讓我們做的網頁demo打包成app,簡直就是神器。但是當我用pyinstaller打包pywebview生成一個app文件時,卻發現了一些問題。當gui="qt"或者gui="mshtml"或者gui不賦值使用默認值或者在主函數開頭設置 PYWEBVIEW='cef'時,會發現在win10下打包后的程序可執行(這種情況,Echarts圖表動態刷新的數據會莫名亂跳)。當gui="cef"時,在win10下打包后的程序不可執行(這種情況,python運行pywebview時,Echarts圖表刷新的數據不會跳動)。在設置gui="cef"時,點擊打包生成的exe文件,報錯如下:

debug.log 文件會輸出如下信息:[0812/112825.786:ERROR:icu_util.cc(133)] Invalid file descriptor to ICU data received.

 

於是,開始想着解決這個問題,先走一波常規流程,直接度娘、谷歌,一頓操作后發現還是沒有找到解決辦法。諸如網上一些 什么內存泄漏、版本過低等原因,試了都沒有解決。於是直接去github下向作者提issue,終於有神秘網友成功幫我解決了這個問題。真的是很感謝,很感動,在此把解決辦法記錄下來,擔心以后會忘了這個騷操作,同時也分享給遇到同樣問題的朋友。

博主系統環境:

win10 64

python3.6

pywebview 3.0.1

cefpython3 66.0

PyInstaller 3.5

解決辦法:

1.去cefpython3的github網址上https://github.com/cztomczak/cefpython把源碼下載下來,在工程文件夾的 /examples/pyinstaller目錄下拷貝 hook-cefpython3.py 文件

2.把剛復制的hook-cefpython3.py文件粘貼到 /site-packages/PyInstaller/hooks/下(這個要參考自己的PyInstaller安裝路徑)

 

大功告成,再次打包,發現生成的exe文件已經沒毛病了!

 知識點補充:

①CEF(Chromium嵌入式框架)——Chromium Embedded Framework (CEF)是個基於Google Chromium項目的開源Web browser控件,支持Windows, Linux, Mac平台。除了提供C/C++接口外,也有其他語言的移植版。因為基於Chromium,所以CEF支持Webkit&Chrome中實現的HTML5的特性,並且在性能上面,也比較接近Chrome。

CEF Python是由Czarek Tomczak於2012年創建的一個開源項目,旨在為Chromium Embedded Framework提供python綁定。嵌入CEF瀏覽器的示例可用於許多流行的GUI工具包,包括:wxPython,PyQt,PySide,Kivy,Panda3D,PyGTK,PyGObject,PyGame / PyOpenGL和PyWin32。

pywebview加載的html、css、js可能不會支持一些比較新的語法,比如js的箭頭函數、fill方法填充數組等,在使用時一定要注意。

gui="cef"時,在windows平台下必須要保證python安裝 cefpython3。gui等於其它值時,可以不用安裝cefpython3。當然,gui不等於"cef"時,如果程序要用pyinstaller打包,那么hook-cefpython3.py 不能拷貝到  ...  /site-packages/PyInstaller/hooks/下,否則會無法運行執行打包命令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM