QtWebEngine 不能从 python 脚本运行
Posted
技术标签:
【中文标题】QtWebEngine 不能从 python 脚本运行【英文标题】:QtWebEngine can't be run from python script 【发布时间】:2021-08-15 02:07:57 【问题描述】:我正在尝试自己构建 QtWebEngine 并将构建用于 python 脚本。我一直在关注这个问题的逐步答案:How to compile Qt webengine (5.11) on Windows with proprietary codecs 并设法构建了 exe。然后,当我第一次尝试运行 exe(在它自己或在我自己的 python 脚本中)时,它给了我一个错误:The application was unable to start correctly (0xc000007b)
。除此之外,我意识到 pip 安装的 qtwebengine 文件夹中的 QtWebEngineProcess exe 是 578KB,而我构建的 exe 只有 16KB,这看起来很奇怪。
然后我在这个问题https://forum.qt.io/topic/65974/the-application-was-unable-to-start-correctly-0xc000007b/2 中看到有人说要使用 windeployqt 运行 exe,我这样做了,它在 QtWebEngineProcess.exe 文件周围生成了很多文件,这使得它可以在该文件夹中运行,尽管当然什么也没有发生,它不会给出错误。
但是,这样做的想法是使用我的 python 脚本运行 exe,所以我尝试以某种方式在我的 python 目录中替换它,但没有运气。当只是替换 exe 时,它给了我同样的 The application was unable to start correctly
错误。当我替换整个 bin 文件夹时,它在 python 中给了我这个错误:ImportError: DLL load failed while importing QtWidgets: %1 is not a valid Win32 application.
另外,我在 python 中的 PyQt5 和 PyQtWebEngine 版本都是5.15.4
但是我在编译时使用的版本是5.9.9
。我意识到这可能是一个非常基本的错误,但是我在 Qt 安装程序中找不到5.15.4
,所以就这样做了。关于为什么会发生这种行为以及如何修复它以便可以在我的 python 脚本中使用构建的任何想法?任何帮助表示赞赏。
【问题讨论】:
【参考方案1】:您必须使用编译 PyQt5 的相同版本的 Qt。
PyQt 的版本通常与 Qt 相同,但这不是强制性的,例如 PyQt5 5.15.4 使用的 Qt 版本是 5.15.2。
python -c "from PyQt5.QtCore import PYQT_VERSION_STR, QT_VERSION_STR; print(f'PyQt5 version: PYQT_VERSION_STR, Qt version: QT_VERSION_STR')"
输出:
PyQt5 version: 5.15.4, Qt version: 5.15.2
同样的练习可以应用于 PySide2:
python -c "from PySide2 import __version__; from PySide2.QtCore import qVersion; print(f'PySide2 version: __version__, Qt version: qVersion()')"
输出:
PySide2 version: 5.15.2, Qt version: 5.15.2
【讨论】:
以上是关于QtWebEngine 不能从 python 脚本运行的主要内容,如果未能解决你的问题,请参考以下文章