pythonでmac向けにtkinterアプリを配布したい
pythonにてtkinterを使ってGUIを実装したものをpyinstallerでexe化しています。
▽環境
mac osx yosemite
Python 3.7.4
PyInstaller 3.6
mac向けに配布できるようにexe化(app化)を試みているのですが、自PCでは問題なく動くものの、他のPCに持っていくとtkinterのエラーがでてしまって起動できません。
以下のような簡単なtkinterを立ち上げるだけのスクリプトです。
# coding:utf-8 # my_script.py import tkinter as tk # ウィンドウを作成 win = tk.Tk() win.title("test") win.geometry("420x420") #フレーム frame = tk.Frame(master=win) frame.pack() win.mainloop()
最初はシンプルに、
pyinstaller --onefile my_script.py
として書き出したものを実行すると、以下のようなエラーがでました。
Traceback (most recent call last):pyinstaller --onefile my_script.py File "site-packages/PyInstaller/loader/rthooks/pyi_rth__tkinter.py", line 30, in <module> FileNotFoundError: Tcl data directory "/var/folders/hq/x524xxrj54dgxxfyrvtcjq7w0000gn/T/_MEIidkwr0/tcl" not found. [1469] Failed to execute script pyi_rth__tkinter logout
tkinterが正常に使えていないためアプリが立ち上がりませんでした。いろいろ調べたところ、以下のコードを追加して書き出すととりあえず正常に起動できるようにはなりました。
--add-binary='/System/Library/Frameworks/Tk.framework/Tk':'tk' --add-binary='/System/Library/Frameworks/Tcl.framework/Tcl':'tcl'
しかし、これで書き出したexeファイルはそのPCでは正常に起動できるのですが、他のPC上にexeファイルを移動して実行すると以下のようなtkinterのエラーがでてしまい起動できません。
File "my_script.py", line 68, in <module> File "tkinter/__init__.py", line 2023, in __init__ _tkinter. TclError: Can't find a usable init.tcl in the following directories: /var/folders/lg/gl6mbrfd1fg8c4dkj 4m40 rpm0000gn/T/_MEIMLSSVY/tcl /var/folders /lg/g16mbrfd1fg8c4dkj4m40rpm0000gn/T/_MEIML SSVY/tc18.6 /Library/Frameworks/Pytho n. framework/Versions/3.7/lib/tc18.6 /Users/myname/lib/tc18.6 /Users/lib/tc18 .6 /Users/myname/library /Users/library /Users/tc18.6.8/library /tc18.6.8/li brary This probably means that Tcl wasn't installed properly.
エラーを見る限り init.tcl が見つからないと読めます。エラー文の following directories 以降の、init.tcl をどこから探しているのかを見ると、書き出し時にadd-binaryで一緒にまとめたtclディレクトリの展開先(一時フォルダ)を探しているように見えますが。
なぜエラーになるのかわからず。なにか、ヒントでも頂けると助かります。何卒よろしくお願いいたします。そもそも、根本的になにか間違っているのでしょうか。
また、tkinterを使わずに他のguiライブラリを使うことで回避できるのでしょうか。
あなたの回答
tips
プレビュー