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 に記載されているように
PyQt5を5.7.1にダウングレードしたところ、うまくいきました。
アプリケーションは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
したがって、私にとってこのエラーは、pyuic5を使用しようとしたときに発生しました。
私の場合、virtual_environmentをアクティブ化するだけで、機能しました。
後世のために、PyQt5アプリケーションでかなり長い間このエラーが発生しました。これは、SIPを使用してPythonバインディングをコンパイルする2つのカスタムライブラリ(libArcusとlibSavitar)を使用していたためです。これは、PyQt5の前に、カスタムライブラリ(新しいSIPバージョンを使用)が最初にインポートされたことを確認することで最終的に修正されました。
これはうまくいきました。ただし、PyCharmのデバッガーを介してアプリケーションを実行すると、同じエラーが発生しました。今日、私はPyCharmに特定のPyQt5バージョンとの「PyQt5互換性を有効にする」オプションがあることを理解しました。 [設定]-> [デバッガー]-> [PyQt互換]でこのオプションを無効にすると、これが修正されました。