LoginSignup
3
5

More than 5 years have passed since last update.

py2app でtkinterを使ったpythonアプリのexecutable fileを作る

Last updated at Posted at 2019-01-27

使用環境

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/

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5