Pyinstaller:找不到 PyQT5 Web 应用程序的 QtWebEngineProcess.exe
Posted
技术标签:
【中文标题】Pyinstaller:找不到 PyQT5 Web 应用程序的 QtWebEngineProcess.exe【英文标题】:Pyinstaller: Could not find QtWebEngineProcess.exe for PyQT5 Web Application 【发布时间】:2021-04-12 15:10:21 【问题描述】:我正在开发一个显示叶地图的 Web 应用程序。该网络应用有 3 个选项卡,每个选项卡都添加了一个 QtWebEngineView 小部件。
我正在尝试为我的 Web 应用程序创建一个独立的 .exe 文件。所以我使用 Pyinstaller 将我的项目转换为单个 .exe 文件。我已经不得不在我的规范文件中进行一些更改以解决以前的问题(已修复)。这是规范文件的外观
# -*- mode: python ; coding: utf-8 -*-
block_cipher = None
a = Analysis(['main.py'],
pathex=['D:\\Bus_Stop_Finder'],
binaries=[],
datas=[('input\\stops.txt', 'input'),
('input\\Suggestions.xlsx', 'input'),
(".\\venv\\Lib\\site-packages\\branca\\*.json","branca"),
(".\\venv\\Lib\\site-packages\\branca\\templates","templates"),
(".\\venv\\Lib\\site-packages\\folium\\templates","templates"),
],
hiddenimports=[],
hookspath=[],
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 )
coll = COLLECT(exe,
a.binaries,
a.zipfiles,
a.datas,
strip=False,
upx=True,
upx_exclude=[],
name='main')
在运行Pyinstaller mainspec
时,会创建 dist 文件夹和 main.exe 文件,但是一旦我运行 main.exe 文件,就会出现此错误:
Could not find QtWebEngineProcess.exe
我尝试通读部署 Qt WebEngine 应用程序的 Qt 文档并注意到
为每个 QWebEngineView 或执行 WebEngine 进程 WebEngineView 实例
我不确定,我必须在哪里进行修改或更正。有人可以帮我解决这个问题吗?
【问题讨论】:
我遇到了同样的问题,最终使用了nuitka:nuitka --standalone --plugin-enable=qt-plugins <your_script.py>
和wrappe,正如提到的here
【参考方案1】:
我遇到了类似的问题,最后解决了。 (Python 3.9.5 & PyQt5.15.4)
您的问题与规范文件修改无关。
问题的根源在于生成文件的结构。
更准确地说是在dist
目录中。
app_name.exe 正在寻找的 QtWebEngineProcess.exe,它存在于dist>app_name>PyQt5>Qt>bin
路径中,但此应用无法访问它。要创建此访问权限,必须执行以下任务:
在dist>app_name
目录中创建一个文本文件并将其命名为qt.conf
在里面输入以下文字
[Paths]
Prefix = PyQt5/Qt/
现在 main.exe 运行没有任何问题:)
【讨论】:
最后一个 Slash 是可选的,对结果没有影响。【参考方案2】:我遇到了同样的问题,尝试了 Saam 的修复,但显然,最后一个斜杠是通过钩子添加的。我在 dist/appname 中添加了一个 qt.conf 文件 目录
[Paths]
Prefix = PyQt5/Qt
【讨论】:
【参考方案3】:[Paths]
Prefix = PyQt5/Qt/
您必须创建一个包含上述详细信息的qt.conf
文件,并且该文件应与您的应用程序一起使用。
Example 1Example 2
【讨论】:
以上是关于Pyinstaller:找不到 PyQT5 Web 应用程序的 QtWebEngineProcess.exe的主要内容,如果未能解决你的问题,请参考以下文章
Pyinstaller 和 PyQt5 出错“找不到现有的 PyQt5 插件目录”
如何解决意外的 pyinstaller 异常“找不到 pyqt5_plugins 分发”?
Python pyinstaller没有自动将依赖库打包进去,运行时提示找不到模块ModuleNotFoundError: No module named ‘PyQt5‘
Python pyinstaller没有自动将依赖库打包进去,运行时提示找不到模块ModuleNotFoundError: No module named ‘PyQt5‘