Pythonのtkinterで作ったものをExe化して配布するときの方法
ひょんなアイディアからPythonのtkinterを利用したアプリを実行ファイルとして配布することがあったので、メモします。
Pythonでアプリを作って誰かに使ってもらいたい!
という場合に、Pythonファイルをそのまま渡すのは、一般ユーザーには優しくないと思います。
そんな時に、実行ファイルとして渡してあげるとスムーズに利用できるかと思います。
今回は、pyinstallerというライブラリを使用します。
目指す実行ファイル像と結論
目指す実行ファイルは下記のようなものです。
- 実行ファイルのアイコンに作成したロゴが表示される
- 起動時の左上のアイコンにtkinterのロゴではなく、自身のロゴを表示する
- 普通のアプリのように使える
結論的には、このコマンドを打てば、アプリにロゴを入れたうえで、起動Windowを1つにすることができます。
pyinstaller --onefile --noconsole --icon=img/icon.ico YOUR_FILE.py
各オプションの説明
1つの実行ファイルにする:–onefile
配布時に1つの実行ファイルにまとめた方が楽だと思ったので、このオプションを追加します。
起動Windowを1つにする:–noconsole
pyinstallerで何も指定しない場合、黒い画面も表示されてしまいます。
この黒い画面は、print文などの標準出力の結果を表示するもので、デバックには便利ですが、
配布時には不要のため、表示しないようにします。
アプリにロゴをいれる:–icon
指定のディレクトリにアイコン画像を収納し、そこを指定します。
画面左上tkinterのロゴを変える
このリンク先のように、ソースに直書きします。もっといい方法あるのかしら?
配布時に1つの実行ファイルだけにしたかったのでこうしました。
まとめ
pythonのアプリを実行ファイルにする方法を説明してきました。
pyinstallerを使うと、データサイズが大きくなる、とか、起動が遅い、とかいう噂を聞きましたが、
私の場合、5MBくらいでしたし、起動も1~2秒だったので特に不満は感じなかったです。
この方法で、できないこと(しないこと)
pyinstaller以外でも、実行ファイルを個人で作ると、実行時に「windowsによってpcが保護されました」が表示されます。
これを回避するには、Windowsに提供元の署名が必要になるのですが、費用が掛かります。
ネットのサーバーのように、オレオレ証明書作ることもできますが、利用者にその証明書ダウンロードしてもらわらないといけないので、
あまりメリットはないと思います。
ということで、今回は、証明書は省きました。