【问题标题】:PyQt5 crashes if I import QtWebEngineWidgets如果我导入 QtWebEngineWidgets,PyQt5 会崩溃
【发布时间】:2017-06-05 02:16:18
【问题描述】:

我使用 Python 3.6 创建了一个新的 Anaconda 环境。我用pip install PyQt5 安装了PyQt5。我有这个简单的程序:

from PyQt5 import QtWidgets
#from PyQt5 import QtWebEngineWidgets

app = QtWidgets.QApplication([])

正如所写,它运行(并且什么都不做)。如果我取消注释 QtWebEngineWidgets 行,它会崩溃。如果我不注释该行,但注释掉最后一行,则它不再崩溃。换句话说,它在尝试创建应用程序时崩溃,但前提是我之前尝试导入QtWebEngineWidgets。除非我尝试创建应用程序,否则导入 QtWebEngineWidgets 本身不会导致崩溃。

我在 Windows 7 上运行此程序。崩溃是“硬”崩溃:这不是 Python 异常,而是 Windows 弹出窗口显示“Python 已停止工作”。该信息说崩溃是在“atio6axx.dll”中。谷歌搜索我看到一些提示,Qt 和我的图形驱动程序之间可能存在某种冲突,但我不知道如何调试它,更不用说修复它了。 (我有一个显示为 ATI Radeon HD 4250 的嵌入式图形控制器。)

conda list qt 显示:

 PyQt5                     5.8.2                     <pip>

如何才能成功使用 QtWebEngine?

【问题讨论】:

  • conda list qt 的输出是什么?我发现将带有 Pip 的 PyQt 安装到 Anaconda 环境中会破坏 pyqt conda 包,即使跨环境也是如此。从 Anaconda 开发人员那里得到的the answer,我推断您在使用 Anaconda 时应该只使用conda 安装 PyQt。我建议这样做,因为否则很难(如果不是不可能的话)确保 PyQt 的 pip 和 conda 版本不混合。
  • @titusjan:我编辑了问题以包含该输出。但如果你说的是真的,那似乎意味着根本不可能将最新版本的 PyQt 与 Anaconda 一起使用,因为 conda 的版本只有 5.6。真的是这样吗?
  • 另外,在这个环境中安装 PyQt5 似乎与这个问题无关,所以(敲木头)事情并没有像他们看起来那样糟糕。例如,我仍然可以成功运行 Spyder 和 IPython QtConsole。
  • 是的,如果您使用 Anaconda,我相信您目前仅限于 PyQt 5.6。它的设计理念是一个环境一次只能有一个包的一个版本。现在,您的环境中有两个版本的 Qt DLL。我不知道细节,但他们可能会干扰(当然我可能是错的)。 python -c "from PyQt5 import QtWebEngineWidgets; print(QtWebEngineWidgets.__file__)" 的输出是什么?您还可以使用python -v 参数(在此命令中或在运行程序时)查看访问了哪些 DLL 文件。使用-v -v 获取更多详细信息。
  • @titusjan:糟糕,我显示的 conda 列表输出错误(它来自不同的环境)。我更正了上面的输出。)我的经验与您在 github 问题中描述的有所不同。如果我运行你的命令,我会在我的环境中得到一条看起来应该是的路径。此外,如果(在不同的环境中)我在我的 pip PyQt5 上安装 conda pyqt,这与我得到的行为不同。如果我只有 pip PyQt5,我会崩溃。如果我在 pip PyQt5 上安装了 conda pyqt,那么尝试导入 QtWebEngineWidgets 会立即失败并出现 DLL 加载错误。

标签: python qt crash pyqt qtwebengine


【解决方案1】:

根据我的经验,这个问题与同时使用 pip 和 anaconda 安装 PyQt 无关,尽管这也会导致问题。如果您只在 Anaconda 上安装了 pyqt,则以下代码会导致严重崩溃:

from qtpy import QtWidgets
from qtpy import QtWebEngineWidgets
app = QtWidgets.QApplication([])

在“升级”到 Windows 10 后,我们开始在多台计算机上遇到这种情况,并注意到 Spyder 停止工作。它退出而没有错误消息。 IT 人员追踪到了显卡。

解决方案:将 pyqt 降级到 5.6 版本:conda install pyqt=5.6

【讨论】:

    【解决方案2】:

    我目前也在 Windows 10 机器上看到了这种行为。
    我也使用 qtpy,但仅在 PyQt5 中完成了相同的示例。

    降级到 5.6 会改变其他行为 li

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-02
      • 1970-01-01
      • 2018-11-07
      • 1970-01-01
      • 2013-07-04
      • 2014-07-20
      • 2019-03-01
      • 1970-01-01
      相关资源
      最近更新 更多