首页 > 解决方案 > PyQt5 错误“使用不正确的名称调用 PyCapsule_GetPointer”

问题描述

我刚刚在 OpenSUSE 跳跃上使用 python 3.6.3 在 pyenv virtualenv 中构建了 PyQt5,构建进行得很好,但是当我导入时

>>> from PyQt5 import QtCore
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: PyCapsule_GetPointer called with incorrect name

我可以导入 PyQt5,但是我不能使用它下面的模块

>>> import PyQt5
>>> PyQt5.QtCore
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'PyQt5' has no attribute 'QtCore'

我在这里读到,原因可能是系统上的另一个问题,例如 PyQt4 安装,我试图从包管理器中卸载 PyQt4,但它没有帮助。

我不知道该怎么办,有什么想法吗?

如果我安装 python3-qt5 包并使用系统 python 它可以工作

编辑:

我在 OpenSUSE Leap 15 上的另一台机器上使用 PyQt4 时遇到了同样的问题,解决方案是配置 sip:

python configure.py --sip-module PyQt4.sip --no-dist-info --no-tools

PyQt4 文档中所述

标签: linuxpython-3.xpyqt5python-sip

解决方案


好的,实际上这很容易,如文档(PyQt4PyQt5)中所述,必须使用该--sip-module选项配置 SIP,所以对于 PyQt5 我做了:

python configure.py --sip-module PyQt5.sip --no-tools

对于 PyQt4:

python configure.py --sip-module PyQt4.sip --no-tools

这适用于 PyQt >= 4.12.2 和 PyQt >= 5.11

编辑:PyQt5 现在有所谓的 PyQt-builder,请参阅PyQt5 文档


推荐阅读