wxPythonをPython3で使えるようにするのこと
Ubuntu 16.04ではwxPythonはpython-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で上書きしてお茶を濁す。
(何が原因だろう。それにこんな対処でいいんだろうか)
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
GTKのwebkitライブラリがない
wxWidgetのビルド時のチェックで確かにWarnningだったが、
スルーされていたのでOKかと思いきや、エラー。
sudo apt-get install libwebkitgtk-dev
notifyライブラリがない
上と同様。Warnningが上がっていた。
エラーになるかわからないが、二度手間は嫌なのでインストールしておく。
sudo apt-get install libnotify-dev
ここまでやってようやっとビルドが通る。
ビルド完了確認ができたら、pipを使って再トライ。
もう一度、ビルドが走って待たされるけど、今度は正しくインストールできた。
確認は、下記で取れる。
python3 import wx wx.version()
余談だけど、build.pyを使ってのインストールができなかったんだよね、なんでだろう。
結果的にpipでインストールできたからいいけどさ。
あとはアプリを作って確認だ。
追記:
2017/04/16にwxPython4のアルファ版がPyPIに登録された。
Python2.7〜3.4+まで対応されているようなので、
わざわざ開発版のPhoenixをインストールする理由もなくなった。
これからは以下でOK。
pip install wxPython