使用環境
macOS Mojave version 10.14.2
python 3.7.1
tkinter 8.6
py2app 0.19
あらすじ
UdemyのPythonの授業を受けていて、tkinterを用いたデスクトップアプリケーションを、standaloneのexecutable fileにする講座を見た。しかし、講座内でしようしていたpyinstallerはmac osではバグが報じられておりexecutable fileが作れたものの後ろでTerminalも一緒に起動してしまった。
Terminalを起動させたくなく、他の方法を探したのち、py2appにたどり着く。
こちらのpy2appのドキュメンテーションを元にsetup.pyを作り、
python setup.py py2app
をターミナルで実行するも、
ValueError: '/Users/home/miniconda3/lib/libpython3.7.dylib' does not exist
というエラーが出てくる。
なお、executable fileはできていたため、起動してみると
A python runtime not could be located. You may need to install a framework build of Python, or edit the PyRuntimeLocations array in this application's Info.plist file.
というエラーが出てきた。
解決策
https://qiita.com/komi5320/items/a089b320bec8599253d1
こちらの記事、参考にさせていただきました。
上記の記事にも書いてあるように、setup.pyの中の
OPTIONS =
の中に
OPTIONS = {'argv_emulation':True,
'plist':{
'PyRuntimeLocations':[
'@executable_path/../Frameworks/libpython3.7m.dylib',
'/***/lib/libpython3.7m.dylib'
]
}}
というコードを挿入する。
***の部分はPCによって異なるため、ターミナルに
locate libpython
と打ち込んで
libpython3.7m.dylib
を探す。(他の結果が大量に出てきて探すのがやや大変だが、そこは目を凝らしてなんとか)
そして見つけたpathを上記のコードに挿入して再び
python setup.py py2app
を起動する。
この時、
rm -rf build dist
をしてbuild と distディレクトリを消去しておく。
setup.pyを実行した後、自分の場合は
ValueError: '/Users/home/miniconda3/lib/libpython3.7.dylib' does not exist
というエラーが出てくるのに代わりはなかったものの、distディレクトリに入ってるアプリは難なく起動
したため、一応問題は解決できた。
なお、上記のエラーを解決できるかたがいましたら、教えていただけると幸いです。
他に参考にしたサイト
https://stackoverflow.com/questions/39379155/how-do-i-use-py2app-with-anaconda-python
https://www.metachris.com/2015/11/create-standalone-mac-os-x-applications-with-python-and-py2app/
現在受講しているUdemyのコース
https://www.udemy.com/the-python-mega-course/