web-dev-qa-db-ja.com

PyQt5エラー「PyCapsule_GetPointerが間違った名前で呼び出されました」

OpenSUSEの飛躍でpython 3.6.3を使用してpyenvvirtualenvで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 doc に記載されているように

4
Pedru

OK、これは実際にはかなり簡単でした。ドキュメントに記載されているように( PyQt4PyQt5 )、SIPは_--sip-module_オプションなので、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に適用されます。

2
Pedru

PyQt5を5.7.1にダウングレードしたところ、うまくいきました。

0
PritamJ

アプリケーションはPyQt4と5の両方をインポートしていますか?

私はこれでウィンドウズの最初のエラーを見ました:

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
0
NateTheGrate

したがって、私にとってこのエラーは、pyuic5を使用しようとしたときに発生しました。

私の場合、virtual_environmentをアクティブ化するだけで、機能しました。

0
sqp_125

後世のために、PyQt5アプリケーションでかなり長い間このエラーが発生しました。これは、SIPを使用してPythonバインディングをコンパイルする2つのカスタムライブラリ(libArcusとlibSavitar)を使用していたためです。これは、PyQt5の前に、カスタムライブラリ(新しいSIPバージョンを使用)が最初にインポートされたことを確認することで最終的に修正されました。

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

これはうまくいきました。ただし、PyCharmのデバッガーを介してアプリケーションを実行すると、同じエラーが発生しました。今日、私はPyCharmに特定のPyQt5バージョンとの「PyQt5互換性を有効にする」オプションがあることを理解しました。 [設定]-> [デバッガー]-> [PyQt互換]でこのオプションを無効にすると、これが修正されました。

0
Ghostkeeper