読者です 読者をやめる 読者になる 読者になる

ひこぽんのーと

覚書と雑記です。

wxPythonをPython3で使えるようにするのこと

ubuntu プログラム python

Ubuntu 16.04ではwxPythonpython-wxgtk3.0の名でapt-getから標準でインストールできる。
ただし、これはpython2でしか使えない。
そもそもwxPythonはpython2用らしい。

だけれど、昨今の流れから、そろそろpython3へ移行すべきであり、
wxPythonを使って作った自作アプリも練習を兼ねてpython3化したい。
というわけで、まずは、wxPythonをpython3で使う方法を探してみた。

どうも、wxPythonには開発版としてのwxPython-Phoenixというものがあり、
こちらからファイルを取得してインストールすれば良いらしい。
インストールにはpipというpython環境用のパッケージマネージャを使う。
と、一応、wxPython本家のサイトに説明があった。

How to install wxPython - wxPyWiki

Ubuntu MATE 16.04にはpython2.7とpython3.5がインストールされていて、
pipもpython2用と3用が別々に存在する。
pipはpython2用であり、3用はpip3となる。

前置きはともかく、説明通り下記のコマンドを実行してみる。

sudo pip3 install --upgrade --trusted-host wxpython.org --pre -f http://wxpython.org/Phoenix/snapshot-builds/ wxPython_Phoenix 

ダウンロードは済むものの、pipのバージョンが古いとかで、インストールできない。
結論から言うと、この先もエラーが頻発し、ライブラリを追加しないとまともにインストールできなかった。
どうやらインストールっていっても、Windows版やMac版と違いバイナリがないため、ビルドが必要なようだ。
原因と対処法を箇条書きにするとこんな感じ。
pipを使うと毎度、40M超えのファイルをダウンロードする。
面倒なのでサイトからソースをダウンロードしてビルドコマンドを直接叩いた。

cd {ソースディレクトリ}
sudo python3 build.py build

pipのバージョンが古い

Ubuntu MATE 16.04にインストールされていたものでは古いらしい。
pipを更新するにもpipを使う。

pip3 install --upgrade pip

これで3用のpipが更新される。
しかし、ここに罠が。なんと2用のpipまで更新されてしまった。
そこで、/usr/local/bin/pipを/usr/local/bin/pip2で上書きしてお茶を濁す。
(何が原因だろう。それにこんな対処でいいんだろうか)

C++コンパイラがいない

Ubuntu MATEにはなぜかコンパイラがいなかった。
gccは用があってインストールした記憶があるが。

sudo apt-get install g++

GTKライブラリがない

GTK使ってるやろ、って思ったけど、どうやら開発用のライブラリらしい。

sudo apt-get install libgtk2.0-dev

OpenGLライブラリがない

明瞭な答えがよくわからんかったけど、これでいいみたい。

sudo apt-get install freeglut3-dev

gstreamer0.10または0.08のライブラリがない

libgstreamer0.10-devではないらしく、こっちだったらOKだった。

sudo apt-get install python-gst0.10-dev

python3用のpython-configがない

これもよくわからん話で、
たしかに/usr/binにpython-configやpython2-configはあるが、3用がなかった。
調べるとpython-devを入れると作られるとのこと。

sudo apt-get install python3-dev

GTKwebkitライブラリがない

wxWidgetのビルド時のチェックで確かにWarnningだったが、
スルーされていたのでOKかと思いきや、エラー。

sudo apt-get install libwebkitgtk-dev 

notifyライブラリがない

上と同様。Warnningが上がっていた。
エラーになるかわからないが、二度手間は嫌なのでインストールしておく。

sudo apt-get install libnotify-dev

ここまでやってようやっとビルドが通る。
ビルド完了確認ができたら、pipを使って再トライ。
もう一度、ビルドが走って待たされるけど、今度は正しくインストールできた。

確認は、下記で取れる。

python3
import wx
wx.version()

f:id:nagamitsu1976:20160617165524p:plain

余談だけど、build.pyを使ってのインストールができなかったんだよね、なんでだろう。
結果的にpipでインストールできたからいいけどさ。

あとはアプリを作って確認だ。