Windows pyinstaller wxPython pyecharts无法正常显示问题

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环境非打包 情况下使用wxPythonwx.html2.WebView.New()使用的是WebViewBackendEdge的引擎,WebViewBackendEdgeChrome用的是同一个内核所以能正常显示。 而通过pyinstaller打包后pyinstaller找不到对应的配置文件,无法使用WebViewBackendEdge的引擎,所以默认打包的浏览器是IE,而pyecharts默认使用的是最新版本的echarts链接,IE不支持新版本的echarts的特性,导致页面无法显示的问题

方案一

  • 指定低版本的echarts版本,使用低于3.7.0的版本
python 复制代码
from pyecharts.globals import CurrentConfig

CurrentConfig.ONLINE_HOST = "https://cdn.jsdelivr.net/npm/echarts@3.6.2/dist/"

方案二

  • pyinstaller打包时指定打包文件, 下面提供两种方法,二选一即可

    1. 命令行增加

      shell 复制代码
       # 增加这个
       --add-binary "{HOMEPATH}/wx/WebView2Loader.dll:." 
    2. 配置文件xxx.spec增加

      python 复制代码
      # -*- mode: python ; coding: utf-8 -*-
      from PyInstaller import HOMEPATH
      
      a = Analysis(
      	...
          # 增加这个
          binaries=[(f'{HOMEPATH}/wx/WebView2Loader.dll', '.')],
      	...
      )
  • 完整配置文件xxx.spec

    python 复制代码
    # -*- 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'],
    )
相关推荐
2401_8654396316 分钟前
HTML函数在低温环境下启动慢吗_温度对硬件启动影响【方法】
jvm·数据库·python
m0_377618237 小时前
Golang怎么连接MySQL数据库_Golang MySQL连接教程【总结】
jvm·数据库·python
LN花开富贵8 小时前
【ROS】鱼香ROS2学习笔记一
linux·笔记·python·学习·嵌入式·ros·agv
weixin_586061468 小时前
C#怎么通过反射获取类属性_C#如何动态读取元数据【进阶】
jvm·数据库·python
Jurio.8 小时前
本机开发 + 多机执行的极简远端运行工具
linux·git·python·github·远程工作
skywalk81638 小时前
pytest测试的时候这是什么意思?Migrating <class ‘kotti.resources.File‘>
前端·python
overmind8 小时前
oeasy Python 121[专业选修]列表_多维列表运算_列表相加_列表相乘
java·windows·python
m0_678485458 小时前
CSS如何控制表格单元格边框合并_通过border-collapse实现
jvm·数据库·python
m0_748839498 小时前
如何用组合继承模式实现父类方法复用与子类属性独立
jvm·数据库·python
qq_334563559 小时前
PHP源码是否依赖特定芯片组_Intel与AMD平台差异【操作】
jvm·数据库·python