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文件,報錯以下:css

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

 

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

博主系統環境:git

win10 64github

python3.6web

pywebview 3.0.1windows

cefpython3 66.0數組

PyInstaller 3.5瀏覽器

解決辦法:app

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/下,不然會沒法運行執行打包命令

相關文章
相關標籤/搜索