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',
)

最新文章

  1. ACM: Gym 101047M Removing coins in Kem Kadrãn - 暴力
  2. C#发送邮件时提示:“不允许使用邮箱名称。服务器响应为:”的错误解决办法
  3. CCI4.5/LintCode Validate Binary Search Tree
  4. 区分LocalStorage和偏好数据
  5. php缓存技术(减少数据库服务器压力)
  6. ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 A. Anagrams
  7. css-九宫格自适应的实现
  8. Swiper说明&&API手册
  9. ASP.NET 防盗链的实现[HttpHandler]
  10. 浅尝key-value数据库(一)——一览NoSQL
  11. Qt4创建工程的几种方法:linux系统
  12. Android 滑动界面实现---Scroller类别 从源代码和开发文档了解(让你的移动布局)
  13. Leetcode015 3Sum
  14. nuget挂了吗?
  15. 微博第三方js-sdk登录
  16. mysql 报错 Packets larger than max_allowed_packet are not allowed
  17. (PMP)解题技巧和典型题目分析(每日20题)
  18. 无损压缩PNG工具
  19. tomcat中项目后有括号
  20. 基于Consul+Upsync+Nginx实现动态负载均衡

热门文章

  1. NG-ZORRO + Angular11使用Echarts实现柱折线图-折柱混合,并给图表添加点击打印图表数据!!!详细代码
  2. java入门与进阶P-5.5+P-5.6
  3. Java 进阶P-5.3+P-5.4
  4. 【学习笔记】一种特别有意思的 RTOS 任务切换方法
  5. vue学习笔记(一)---- vue指令( v-on 事件绑定 )
  6. Codeforces Round #851 (Div. 2) A-E
  7. Vue 24 props
  8. P11_组件-button和image组件的基本用法
  9. Centos7系统编译Hadoop3.3.4
  10. JZOJ 7685. 【2022.10.06冲剌NOIP2022模拟】奇怪的函数(function)