我刚刚在 OpenSUSE leap 上使用 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'
我在 这里 读到,原因可能是系统上的另一个 sip,例如 PyQt4 安装,我试图从包管理器中卸载 PyQt4,但没有帮助。
我不知道该怎么做,有什么想法吗?
如果我安装 python3-qt5 包并使用系统 python 它工作
编辑:
我在 OpenSUSE Leap 15 的另一台机器上遇到了与 PyQt4 相同的问题,解决方案是配置 sip:
python configure.py --sip-module PyQt4.sip --no-dist-info --no-tools
如 PyQt4 文档 中所述
原文由 Pedru 发布,翻译遵循 CC BY-SA 4.0 许可协议
好吧,这实际上很简单,如文档( PyQt4 , PyQt5 )中所述,SIP 必须配置
--sip-module
选项,所以对于 PyQt5 我做了:对于 PyQt4:
这适用于 PyQt >= 4.12.2 和 PyQt >= 5.11
编辑:PyQt5 现在有所谓的 PyQt-builder,请参阅 PyQt5 文档