【发布时间】: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