Pyinstaller:找不到 PyQT5 Web 应用程序的 QtWebEngineProcess.exe

问题描述

我正在开发一个显示大叶地图的 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',(".\\venv\\Lib\\site-packages\\branca\\*.json","branca"),(".\\venv\\Lib\\site-packages\\branca\\templates","templates"),(".\\venv\\Lib\\site-packages\\folium\\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,upx_exclude=[],name='main')

在运行 Pyinstaller mainspec 时,会创建 dist 文件夹和 main.exe 文件,但是一旦我运行 main.exe 文件,我就会收到此错误

Could not find QtWebEngineProcess.exe

我尝试通读 Qt 文档以部署 Qt WebEngine 应用程序并注意到

WebEngine 进程对每个 QWebEngineView 或 WebEngineView 实例

我不确定,我必须在哪里进行修改或更正。有人可以帮我解决这个问题吗?

解决方法

我遇到了类似的问题,终于解决了。 (Python 3.9.5 & PyQt5.15.4)

您的问题与规范文件修改无关。

问题的根源在于生成文件的结构。 更准确地说是在 dist 目录中。

app_name.exe 正在寻找的 QtWebEngineProcess.exe,它存在于 dist>{app_name}>PyQt5>Qt>bin 路径中,但该应用无法访问它。要创建此访问权限,必须执行以下任务:

  1. dist>{app_name} 目录中创建文本文件并将其命名为 qt.conf

  2. 在其中输入以下文本

    [Paths]
    Prefix = PyQt5/Qt/
    

现在 main.exe 运行没有任何问题:)

,

我遇到了同样的问题,尝试了 Saam 的修复,但显然,最后一个斜杠是通过钩子添加的。我在 dist/appname 中添加了一个 qt.conf 文件 目录

[Paths]
Prefix = PyQt5/Qt