質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.22%

pythonのtkinterを使ったアプリが他のPCでエラーがでて立ち上がらない

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 72

oshiodesu

score 3

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ライブラリを使うことで回避できるのでしょうか。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.22%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる