CentOS6にPyQt4をインストール

PyQt4をソースからインストール

”あれ、PyQt5のインストールじゃないの??”と言われてしまいそうですが、PyQt4です。PyQt4と5の比較をしたくなることもあるはず!ということで、PyQt4を準備です。これは慣れたもの!(のはず。)前回からの続きということで、ルート権がない状態でCentOS6に開発環境を導入する、ということをテーマにします。

Qt4のインストール

まずはQt4のソースをゲットです。

$ wget http://download.qt.io/official_releases/qt/4.8/4.8.6/qt-everywhere-opensource-src-4.8.6.tar.gz

取得が終われば展開、コンパイルです。

$ tar xf qt-everywhere-opensource-src-4.8.6.tar.gz
$ cd qt-everywhere-opensource-src-4.8.6
$ ./configure --prefix=$HOME/local/qt/4.8.6
$ make

インストール先は、後でQt5も入れることを考えて"~/local/qt/4.8.6"にしました。configure実行直後に聞かれるライセンスはopensourceを選びました。

他にもオプションを工夫したほうが良いかも知れませんが、とりあえず今回は一番簡単なオプションで。。。

おっと、エラーです。

make /home/takumi/app_compile/qt-everywhere-opensource-src-4.8.6/src/3rdparty/webkit/Source/WebCore/WebCore.pro -spec /home/takumi/app_compile/qt-everywhere-opensource-src-4.8.6/mkspecs/linux-g++ -o Makefile.WebKit
Project ERROR: Package gstreamer-app-0.10 not found

むむむ。。。足りないパッケージをyumでインストールす必要がありますね。。。

ルート権がない状態というテーマと、当面WebKitは使わないだろうという前提のもと、WebKitは無視することにします。

$ ./configure --prefix=$HOME/local/qt/4.8.6 -no-webkit
$ make
$ make install

インストール完了。

Python 2.7 のインストール

Python2.7もソースからインストールしてみましょう。執筆時点での最新は2.7.12でした。

$ wget wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz
$ tar xf Python-2.7.12.tgz
$ cd Python-2.7.12
$ ./configure --enable-shared --prefix=$HOME/local/python/2.7.12
$ make
$ make install

特にトラブル無く終了!

SIP & PyQt4のインストール

ここからPyQt4のインストールですね。まずはさっきインストールしたQt,Pythonにパスを通します。

$ export QTDIR=$HOME/local/qt/4.8.6
$ export PATH=$QTDIR/bin:$HOME/local/python/2.7.12/bin:$PATH
$ export LD_LIBRARY_PATH=$QTDIR/lib:$HOME/local/python/2.7.12/lib:$LD_LIBRARY_PATH

これで後はソースのダウンロード&インストールです!

まずはSIP

$ wget https://sourceforge.net/projects/pyqt/files/sip/sip-4.18.1/sip-4.18.1.tar.gz
$ tar xf sip-4.18.1.tar.gz
$ cd sip-4.18.1
$ python configure.py
$ make
$ make install

お次はPyQt4。

$ wget http://sourceforge.net/projects/pyqt/files/PyQt4/PyQt-4.11.4/PyQt-x11-gpl-4.11.4.tar.gz
$ tar xf PyQt-x11-gpl-4.11.4.tar.gz
$ cd PyQt-x11-gpl-4.11.4
$ python configure.py
# Need to accept the license (GPL)
$ make

またエラー。

/home/takumi/app_compile/PyQt-x11-gpl-4.11.4/sip/phonon/abstractaudiooutput.sip:28:33: error: abstractaudiooutput.h: No such file or directory
/home/takumi/app_compile/PyQt-x11-gpl-4.11.4/sip/phonon/abstractvideooutput.sip:28:33: error: abstractvideooutput.h: No such file or directory
/home/takumi/app_compile/PyQt-x11-gpl-4.11.4/sip/phonon/audiooutput.sip:28:25: error: audiooutput.h: No such file or directory
/home/takumi/app_compile/PyQt-x11-gpl-4.11.4/sip/phonon/backendcapabilities.sip:28:33: error: backendcapabilities.h: No such file or directory
/home/takumi/app_compile/PyQt-x11-gpl-4.11.4/sip/phonon/effect.sip:28:20: error: effect.h: No such file or directory

〜〜省略〜〜

/home/takumi/app_compile/PyQt-x11-gpl-4.11.4/phonon/sipphononcmodule.cpp:791: error: 'Phonon' has not been declared
/home/takumi/app_compile/PyQt-x11-gpl-4.11.4/phonon/sipphononcmodule.cpp:791: error: 'a1' was not declared in this scope
/home/takumi/app_compile/PyQt-x11-gpl-4.11.4/phonon/sipphononcmodule.cpp:794: error: 'a0' was not declared in this scope
/home/takumi/app_compile/PyQt-x11-gpl-4.11.4/phonon/sipphononcmodule.cpp:796: error: 'Phonon' has not been declared
/home/takumi/app_compile/PyQt-x11-gpl-4.11.4/phonon/sipphononcmodule.cpp:796: error: 'sipRes' was not declared in this scope
/home/takumi/app_compile/PyQt-x11-gpl-4.11.4/phonon/sipphononcmodule.cpp:799: error: expected type-specifier before 'Phonon'
/home/takumi/app_compile/PyQt-x11-gpl-4.11.4/phonon/sipphononcmodule.cpp:799: error: expected ';' before 'Phonon'

Phononのところみたいですね。Qtのconfigureの時のgstreamerの問題に関連しているような気が。。。Phononを無効化してみよう。

$ python configure.py \
   -e QtGui -e QtHelp -e QtMultimedia -e QtNetwork -e QtDeclarative \
   -e QtScript -e QtScriptTools -e QtXml -e QtOpenGL -e QtSql -e QtSvg \
   -e QtTest -e QtWebKit -e QtXmlPatterns -e QtDesigner -e QAxContainer \
   -e QtDBus -e dbus
$ make
$ make install

インストール完了。configure.pyのオプションはかなり力技?「もっとエレガントに出来ないのか!」と言われてしまいそうですが。。。そもそもPhononから逃げてるような状態なので、このあたりはインストールできれば良し、ということで。

おまけ (pip)

pipもどうせ必要になるので、入れておきましょうか。https://pip.pypa.io/en/latest/installing/ にインストールに関する情報があります。

。。。。。

2.7.9以降はデフォルトでインストールされている???見つかりませんけど???

ソースからインストールすると入らないんでしょうか。とりあえず手順通り入れておきましょう。

$ wget https://bootstrap.pypa.io/get-pip.py
$ python get-pip.py

今回はここまで!