8

フィードバック

私は PyQt5 準拠 (>= 3.3.2) である標準の Python3 (3.3.2+) インタープリターを使用して、PyQt5 インストール (Qt5.2.1 / Sip 4.15.5 API 11 ??? に基づく) に取り組んでいます。 Ubuntu 12.04 で Python3.3-5 をコンパイルでき、その後 PyQt5 (python 3.3.2 以降) をインストールできません。

プラットフォーム:

jeby6372@mercure:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 13.10
Release:    13.10
Codename:   saucy
jeby6372@mercure:~$ uname -a
Linux mercure 3.11.0-13-generic #20-Ubuntu SMP Wed Oct 23 07:38:26 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

インストール中はすべて正常に動作しているように見え、PyQt5 インポートは機能しますが、python3 インタープリターを介してモジュールのインポートを試みると、次のエラーが発生します。

>>> import PyQt5
>>> from PyQt5.QtCore import *
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
RuntimeError: the sip module implements API v10.0 to v10.1 but the PyQt5.QtCore module requires API v11.0

インストール手順:

  • 標準の X64 Linux インストーラーでインストールされた Qt5.2.1
  • ソースからの SIP 4.15.5 インストール
  • compile.py オプションで qmake プログラムをターゲットにして、RiverBank の手順で説明したようにコンパイルされたソースからの PyQt5:

    python3 configure.py --qmake /opt/Qt/5.2.1/gcc_64/bin/qmake --sip /usr/bin/sip

パッケージの場所:

  • Qt-5.2.1 ルート ディレクトリ: /opt/Qt/5.2.1/gcc_64
  • PyQt5 ルート ディレクトリ: /usr/lib/python3.3/site-packages

一口バージョン

jeby6372@mercure:~$ which sip
/usr/bin/sip
jeby6372@mercure:~$ sip -V
4.15.5
jeby6372@mercure:~$ 

私のpython環境変数は次のとおりです。

jeby6372@mercure:~$ echo $PYTHONPATH
/usr/lib/python3.3/site-packages

$PATH 変数:

jeby6372@mercure:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/Qt/5.2.1/gcc_64/bin

$LD_LIBRARY_PATH が空です (重要ではないと思いますが、言及したいと思います...)

site-packages dir の内容は次のとおりです。

jeby6372@mercure:~$ ls /usr/lib/python3.3/site-packages
PyQt5

__init__.py  QtCore.so  QtDBus.so  QtNetwork.so  Qt.so  QtXmlPatterns.so  uic

しかし、以前のインストールでは違いました。理由がわからない!:

jeby6372@mercure:~$ ls /usr/lib/python3.3/site-packages/PyQt5
__init__.py               QtDesigner.so           QtNetwork.so       QtQuick.so       QtSvg.so        QtXmlPatterns.so
_QOpenGLFunctions_2_0.so  QtGui.so                QtOpenGL.so        QtSensors.so     QtTest.so       uic
QtBluetooth.so            QtHelp.so               QtPositioning.so   QtSerialPort.so  QtWebKit.so
QtCore.so                 QtMultimedia.so         QtPrintSupport.so  Qt.so            QtWidgets.so
QtDBus.so                 QtMultimediaWidgets.so  QtQml.so           QtSql.so         QtX11Extras.so

問題がどこにあるのかわからず、この製品に取り組めば取り組むほどわからなくなります。Python 3.3-5 コンパイル エラーのために PyQt5 が Ubuntu 12.04 で動作しないため、Ubuntu 13.10 でこのインストールを行っています。まだ回答がありません。...

助けてください。

前もって感謝します。

4

2 に答える 2

13

あなたの問題は、ディストリビューションで提供された sip と、おそらくソースからコンパイルした sip の衝突から生じています。

ユーザー mata によって提案されているようimport sip; print(sip, sip.SIP_VERSION_STR)に、python3 インタープリター コンソール内から呼び出し、出力をsip -V通常の (bash) コンソールからの呼び出しから得られる出力と比較します。バージョンはおそらく異なります。

システムにインストールされている sip 関連のパッケージをすべて特定することで、このエラーを克服しました。(Debian ライクなシステムの場合: dpkg -l | grep sip)、それらとそのすべての構成ファイルを削除し (Debian の場合: apt-get purge python3-sip python3-sip-dev...)、カスタム バージョンを再インストールしました (make install再度実行して)。

ちなみに、すべての PyQt5 パッケージについても同じことを行いました。不完全なサイト パッケージ リストによると、古い PyQt5 ディストリビューション パッケージもインストールされている可能性があります。現在のものには、さらに多くのモジュールがあります。(例えばQtSql)

(上記のすべてのコマンドは、おそらく root として実行する必要があります。)

于 2014-04-06T16:36:04.257 に答える