pyqt5とpy2appを使って.app形式のGUIアプリケーションを作る
前回無事pyqt5を導入できたので、以下のサイトを参考にGUIアプリケーションを作ってみました。英語ですが非常に分かりやすくて素晴らしかったです。
Your first GUI app with Python and PyQt
ただ、上記のサイトで使っているのはPyQt4で、私が入れたのはPyQt5。まるまるコピーさせて頂きスクリプトを実行したらcommand not foundエラーが出たのでググってみると、PyQt5からはQMainWindowやQApplicationはQtGuiからではなくQtWidgetsから呼び出さなくてはならないとのことでした。
サイトで紹介されていた雛形は、PyQt5では以下のようなスクリプトになりました。
from __future__ import division, print_function, absolute_import import sys from PyQt5 import uic, QtWidgets qtCreatorFile = "" # Enter file here. Ui_MainWindow, QtBaseClass = uic.loadUiType(qtCreatorFile) class MyApp(QtWidgets.QMainWindow, Ui_MainWindow): def __init__(self): QtWidgets.QMainWindow.__init__(self) Ui_MainWindow.__init__(self) self.setupUi(self) if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) window = MyApp() window.show() sys.exit(app.exec_())
無事GUIアプリケーションを作って実行できたところで、せっかくなのでMacのアプリケーションファイルである.appで書き出すところまでやってみました。
使うのはpy2appというライブラリです。
pip install py2app
先ほど作ったスクリプトのディレクトリに移動して、コンソールから
py2applet --make-setup script.py
そして、続けて
python setup.py py2app -A
これで生成される./dist/の中に.app形式のファイルができるのですが、いざ実行してみると「a python runtime not could be located」といったようなエラーが発生しました。
調べてみると、You may need to install a framework build of Pythonということで、pyenvのような環境で導入されたPythonではフレームワークが使えずビルドに失敗しているとのこと。
pyenvで入れたpythonでビルドするのは諦めモードが漂うstackoverflowでしたが、以下のサイトを思い出しました。
pyenvでPythonをFrameworkとしてインストールする
これでゼロからpython2.7.10を再インストール。
$ env PYTHON_CONFIGURE_OPTS="--enable-framework" pyenv install 2.7.10
無事いけたか!と思いきや、またもやエラー。ログを見ると、qtCreatorFile = “”で指定した.uiファイルがnot foundと表示されていたので、フルパスを指定したら無事ちゃんとビルドできて動きました。
This Post Has 0 Comments