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/下,否则会无法运行执行打包命令
pywebview gui='cef' 生成app报错—— 中断点 已到达中断点的更多相关文章
- eact native生成APP报错:You have not accepted the license agreements of the following SDK components:
一.报错信息 * What went wrong: A problem occurred configuring project ':app'. > You have not accepted ...
- 用itext生成PDF报错:Font 'STSong-Light1' with 'UniGB-UCS2-H' is not recognized.
用itext生成PDF报错,加上try catch捕获到异常是 BaseFont bFont = BaseFont.createFont("STSong-Light1", &quo ...
- 报错:已有打开的与此命令相关联的 DataReader,必须首先将它关闭。
SqlParameter[] sp = { new SqlParameter("@nGridID",SqlDbType.BigInt), new SqlParameter(&quo ...
- asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)
原文:asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!) 我想用post的方式把一个页面表单的值,传到另一个页面.当我点击Default.as ...
- 使用自编译的Emacs26.0.50build10版本,helm报错(已解决)
使用自编译的Emacs26.0.50build10版本,helm报错(已解决) */--> code {color: #FF0000} pre.src {background-color: #0 ...
- Core在IIS的热发布问题或者报错文件已在另一个程序中打开
关于Core发布到IIS的热发布问题,或者覆盖dll文件的时候会报错"文件已在另一个程序中打开",也就是无法覆盖程序的问题,经过百度和分析总结以下几种方案: 一.使用app_off ...
- pyinstaller 将.py生成.exe ----报错 “IndexError: tuple index out of range”
pyinstaller将py打包为exe文件,用pysintaller居然报错 File "c:\anaconda3\lib\site-packages\PyInstaller\depend ...
- npm 打包 electron app 报错问题
在进行desktop打包过程中,遇到如下报错: 0 info it worked if it ends with ok 1 verbose cli [ 'C:\\Program Files\\node ...
- Eclipse及Eclipse为基础的App报错“Failed to create the Java Virtual Machine”的解决办法
由于OracleJDK马上就要收费了,公司要求更换OpenJDK,结果安装后Eclipse及Eclipse为基础的App启动报错:“Failed to create the Java Virtual ...
随机推荐
- CommandLineToArgvW调EXE传入参数【转载】
#include <afxwin.h> // TODO: add your code here LPWSTR *szArglist = NULL; ; szArglist = Comma ...
- Java 并发总结(三)
锁优化及注意事项 有助于提高锁的性能 减小所持有时间:例如不要对方法直接加锁,而是在方法中对具体访问临界资源的代码加锁 减小锁粒度:如ConcurrentHashMap 用读写锁代替独占锁 锁分离:如 ...
- [02]APUE:POSIX 正则库(#include <regex.h>)
正则匹配流程: 声明一个 regex_t 类型的变量(结构体) regcomp 函数会将“正则匹配条件”写入此结构体,并编译成特定的二进制格式(加快匹配速度) 声明一个 regmatch_t 类型的变 ...
- vue axios springBoot 跨域session丢失
前端: 在引入axios的地方配置 axios.defaults.withCredentials=true,就可以允许跨域携带cookie信息了,这样每次发送ajax请求后,只要不关闭浏览器,得到的s ...
- python学习8—函数之高阶函数与内置函数
python学习8—函数之高阶函数与内置函数 1. 高阶函数 a. map()函数 对第二个输入的参数进行第一个输入的参数指定的操作.map()函数的返回值是一个迭代器,只可以迭代一次,迭代过后会被释 ...
- bias、variance与拟合之间的关系
Error = Bias^2 + Variance+Noise 误差的原因: 1.Bias反映的是模型在样本上的输出与真实值之间的误差,即模型本身的精准度,即算法本身的拟合能力. 2.Variance ...
- 初学者学习PHP开发应该掌握的几段精华代码
来自:http://hi.baidu.com/dckhello/item/d62b16d8994bf93449e1ddb0 经典循环例子 <HTML><HEAD><TIT ...
- django静态文件的配置
Django static静态配置文件 对于Django来说静态文件一般交由Web服务器处理,Django本身不处理静态文件.为了使Django开发环境能够处理静态文件,Django有和生产环境不 ...
- NLP杂点
1.停用词 stop words: 在处理自然语言数据(或文本)之前或之后会自动过滤掉某些字或词. 停用词都是人工输入.或者由一个停用词表导入. 2.jieba是目前最好的 Python 中文分词组件 ...
- Liunx下安装Oracle11g时Oracle Grid安装包下载向导
下载Oracel 11g Grid的安装包 Oracle官网 https://www.oracle.com 快捷访问路径:https://www.oracle.com/technetwork/dat ...