python + QML程序中调用WebView后打包
2024-09-08 17:25:17
QML中如果加入了WebView控件,在用pyinstaller打包时不会自动导入,从而导致打包出的程序运行报错,no WebView plugin found,此时需要手动将WebView控件复制到打包后的程序目录下的PySide6包中,需要复制的文件有以下四个:
- xxx/Lib/site-packages/PySide6/QtWebEngineProcess.exe
- xxx/Lib/site-packages/PySide6/plugins/webview
- xxx/Lib/site-packages/PySide6/resources
- xxx/Lib/site-packages/PySide6/translations/qtwebengine_locales
其中xxx为python程序安装目录,例如第一个文件,我的完整路径为 'C:/myenvs/Python/Lib/site-packages/PySide6/QtWebEngineProcess.exe' ,打包后的程序目录中会有一个PySide6文件夹,将这些文件或文件夹复制到对应的位置就可以了,例如第二行的webview文件夹放到 '打包后的程序目录/PySide6/plugin' 文件夹下,其他同理。
另外,还可以通过修改打包时的.spec文件来自动拷贝这些文件,用TXT或其他文本编辑器打开.spec文件,其中 'a = Analysis(' 后面会有一个 'datas=[]' ,在datas这个数组中加入元组,元组的第一个元素代表from来自哪里,第二个元素代表to要拷贝到哪里,需要注意的是如果要拷贝的是单个文件,to后面的目标地址写到该文件所在的文件夹即可,具体例子见下面的main.spec文件.
main.spec
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(
['main.py'],
pathex=[],
binaries=[],
datas=[('./main.qml', '.'),
('./assets', 'assets'),
('./temp', 'temp'),
('C:/myenvs/Python/Lib/site-packages/PySide6/plugins/webview', 'PySide6/plugins/webview'),
('C:/myenvs/Python/Lib/site-packages/PySide6/QtWebEngineProcess.exe', 'PySide6'),
('C:/myenvs/Python/Lib/site-packages/PySide6/resources', 'PySide6/resources'),
('C:/myenvs/Python/Lib/site-packages/PySide6/translations/qtwebengine_locales', 'PySide6/translations/qtwebengine_locales')],
hiddenimports=[],
hookspath=[],
hooksconfig={},
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False,
win_private_assemblies=False,
cipher=block_cipher,
noarchive=False,
)
pyz = PYZ(a.pure, a.zipped_data, cipher=block_cipher)
exe = EXE(
pyz,
a.scripts,
[],
exclude_binaries=True,
name='main',
debug=False,
bootloader_ignore_signals=False,
strip=False,
upx=True,
console=True,
disable_windowed_traceback=False,
argv_emulation=False,
target_arch=None,
codesign_identity=None,
entitlements_file=None,
)
coll = COLLECT(
exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='main',
)
最新文章
- ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力
- C#发送邮件时提示:“不允许使用邮箱名称。服务器响应为:”的错误解决办法
- CCI4.5/LintCode Validate Binary Search Tree
- 区分LocalStorage和偏好数据
- php缓存技术(减少数据库服务器压力)
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 A. Anagrams
- css-九宫格自适应的实现
- Swiper说明&;&;API手册
- ASP.NET 防盗链的实现[HttpHandler]
- 浅尝key-value数据库(一)——一览NoSQL
- Qt4创建工程的几种方法:linux系统
- Android 滑动界面实现---Scroller类别 从源代码和开发文档了解(让你的移动布局)
- Leetcode015 3Sum
- nuget挂了吗?
- 微博第三方js-sdk登录
- mysql 报错 Packets larger than max_allowed_packet are not allowed
- (PMP)解题技巧和典型题目分析(每日20题)
- 无损压缩PNG工具
- tomcat中项目后有括号
- 基于Consul+Upsync+Nginx实现动态负载均衡
热门文章
- NG-ZORRO + Angular11使用Echarts实现柱折线图-折柱混合,并给图表添加点击打印图表数据!!!详细代码
- java入门与进阶P-5.5+P-5.6
- Java 进阶P-5.3+P-5.4
- 【学习笔记】一种特别有意思的 RTOS 任务切换方法
- vue学习笔记(一)---- vue指令( v-on 事件绑定 )
- Codeforces Round #851 (Div. 2) A-E
- Vue 24 props
- P11_组件-button和image组件的基本用法
- Centos7系统编译Hadoop3.3.4
- JZOJ 7685. 【2022.10.06冲剌NOIP2022模拟】奇怪的函数(function)