Windows pyinstaller wxPython pyecharts無法正常顯示問題
最近遇到一個pyinstaller
打包wxPython
pyecharts
無法顯示的問題,pyecharts
生成的html頁面顯示空白。未使用pyinstaller
打包時顯示正常。
問題原因
WebViewBackendDefault = b''
WebViewBackendEdge = b'wxWebViewEdge'
WebViewBackendIE = b'wxWebViewIE'
WebViewBackendWebKit = b'wxWebViewWebKit'
WebViewDefaultURLStr = b'about:blank'
在windows環境非打包情況下使用wxPython
的wx.html2.WebView.New()
使用的是WebViewBackendEdge
的引擎,WebViewBackendEdge
跟Chrome
用的是同一個核心所以能正常顯示。 而透過pyinstaller
打包後,pyinstaller
找不到對應的配置檔案,無法使用WebViewBackendEdge
的引擎,所以預設打包的瀏覽器是IE
,而pyecharts
預設使用的是最新版本的echarts
連結,IE
不支援新版本的echarts
的特性,導致頁面無法顯示的問題
方案一
- 指定低版本的
echarts
版本,使用低於3.7.0的版本
from pyecharts.globals import CurrentConfig
CurrentConfig.ONLINE_HOST = "https://cdn.jsdelivr.net/npm/echarts@3.6.2/dist/"
方案二
-
pyinstaller
打包時指定打包檔案, 下面提供兩種方法,二選一即可-
命令列增加
# 增加這個 --add-binary "{HOMEPATH}/wx/WebView2Loader.dll:."
-
配置檔案xxx.spec增加
# -*- mode: python ; coding: utf-8 -*- from PyInstaller import HOMEPATH a = Analysis( ... # 增加這個 binaries=[(f'{HOMEPATH}/wx/WebView2Loader.dll', '.')], ... )
-
-
完整配置檔案xxx.spec
# -*- mode: python ; coding: utf-8 -*- from PyInstaller import HOMEPATH a = Analysis( ['main.py'], pathex=[], binaries=[(f'{HOMEPATH}/wx/WebView2Loader.dll', '.')], datas=[('./static/datasets', 'pyecharts/datasets/'), ('./static/templates', 'pyecharts/render/templates/'), ('./static/js', 'static/js/')], hiddenimports=[], hookspath=[], hooksconfig={}, runtime_hooks=[], excludes=[], noarchive=False, optimize=0, ) pyz = PYZ(a.pure) exe = EXE( pyz, a.scripts, a.binaries, a.datas, [], name='mini-tool', debug=False, bootloader_ignore_signals=False, strip=False, upx=True, upx_exclude=[], runtime_tmpdir=None, console=False, disable_windowed_traceback=False, argv_emulation=False, target_arch=None, codesign_identity=None, entitlements_file=None, icon=['static\\icon.png','static\\icon.png'], )