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‘

在 PyQt5 中使用 cx_freeze,找不到 PyQt5

Python PyQt5如何更改最小化图标