PyQt5错误“使用不正确的名称调用了PyCapsule_GetPointer”

时间:2018-08-05 11:40:20

标签: linux python-3.x pyqt5 python-sip

我刚刚在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'

我已经读过here,原因可能是系统上的另一个问题,例如安装PyQt4,我试图从程序包管理器中卸载PyQt4,但这没有帮助。

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

如果我安装python3-qt5软件包并使用系统python可以正常工作

编辑:

我在OpenSUSE Leap 15的另一台计算机上遇到PyQt4相同的问题,解决方案是使用以下命令配置sip:

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

PyQt4 doc

中所述

5 个答案:

答案 0 :(得分:2)

好,因此实际上非常容易,如文档(PyQt4PyQt5)所述,必须使用--sip-module选项配置SIP,因此对于PyQt5,我这样做了: / p>

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

答案 1 :(得分:0)

您的应用程序是否同时导入PyQt4和5?

我在Windows上看到了以下第一个错误:

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 27 2018, 04:59:51) [MSC v.1914 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
Executable: D:\Python37\python.exe
>>> from PyQt5 import QtWidgets
>>> from PyQt4 import QtGui, QtCore
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: PyCapsule_GetPointer called with incorrect name

答案 2 :(得分:0)

我将PyQt5降级为5.7.1,对我有用。

答案 3 :(得分:0)

所以对我来说,当我尝试使用 pyuic5 时,会发生此错误。

就我而言,我只需要激活我的virtual_environment,然后它就可以工作了。

答案 4 :(得分:0)

为了后代,我在PyQt5应用程序中出现此错误已有一段时间,因为我使用的是两个自定义库(libArcus和libSavitar),它们也使用SIP来编译Python绑定。最终通过确保在PyQt5之前先导入我的自定义库(使用新的SIP版本)来解决此问题:

https://github.com/Ultimaker/Cura/blob/b20a349b4454d08e34b3c3ea3f537a380e4c7696/cura_app.py#L140-L141

这有效。但是,当通过PyCharm的调试器运行应用程序时,我仍然遇到相同的错误。今天,我发现PyCharm可以选择使用某些PyQt5版本“启用PyQt5兼容性”。在设置->调试器-> PyQt兼容下禁用此选项即可解决此问题。