🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
PyInstaller

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

28707閲覧

複数あるパイソンファイルのexe化

goki_gottan

総合スコア168

PyInstaller

PyInstallerは、Pythonのスクリプトを一括でWindowsなどで動く実行可能ファイルに変換できるツールです。このツールを用いることで自作のPythonプログラムを別で使用する場合でもPythonをインストールする必要がありません。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

4クリップ

投稿2019/09/23 04:27

これまでPythonファイルを1つにまとめて、pyinstallerでexe化しておりましたが、
今回、複数ファイルを作ってしまったため、exe化する際、1つのexeファイルとしてどうやったらできるのかご教示いただきたいです。
複数ファイルはスクリプトで実行する際は連携できております。

参考にしたサイト:
https://sd08419ttic.hatenablog.com/entry/2019/03/16/145938

ですが、複数あるスクリプトファイルの中に、これがメインスクリプトで条件分岐して、
他のスクリプトファイルを連携させておりますが、
たとえば、tkinterを使用して、ボタンを押せば、他のスクリプトファイルを実行する
ような感じです。
しかし、

if __name__ == '__main__':

上記のような、構文を一切使っておりません。

このようなスクリプトファイルでも、pyinstallerで、
メインスクリプトを選んでexe化したら、実行時、ちゃんと連携できるのでしょうか。

やり方として、同一フォルダにメイン含め、サブスクリプトを格納しさえすれば良いのでしょうか。それとも、上記のような構文が必要でしょうか。

宜しくお願いいたします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mushroominger

2019/09/23 05:05

ここで聞く前に一回やってみましたか?
guest

回答1

0

ベストアンサー

以下ファイルを同階層に置いてpyinstaller pyinstaller_test.py -Fにてアプリ化してみましたが一つのファイルに収まりました

pyinstaller_test.py

python

1import pyinstaller_test_2 2import pyinstaller_test_3 3 4import tkinter as tk 5 6def main(): 7 root = tk.Tk() 8 9 button1 = tk.Button(root, text='button1', command=pyinstaller_test_2.test).pack(fill='x') 10 butoon2 = tk.Button(root, text='button2', command=pyinstaller_test_3.test).pack(fill='x') 11 12 root.mainloop() 13 14main()

pyinstaller_test_2.py

python

1def test(): 2 print('def test2')

pyinstaller_test_3.py

python

1def test(): 2 print('def test3')

こんな回答でよろしいでしょうか…

投稿2019/09/23 05:29

mushroominger

総合スコア133

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

goki_gottan

2019/09/23 10:47

ご回答ありがとうございます。もう少し知りたいので、質問させてください。 def main()は、必要ですか? それがないと動きませんか?
mushroominger

2019/09/23 11:02

無くても動きますが… 削除してインデントしてpyinstallerでアプリ化すれば済むことですよ! こちとらマカーなのでwindows環境は保証しかねます… 一応Xubuntuでも動いている様子です
goki_gottan

2019/09/23 11:05

def mainがないとダメなんですね。やってみましたがdef mainがある場合は、exe化できましたが、def mainがない場合は、exe化失敗しました。そもそも、この構文ですと、defが必要になってきますね。 変数だけ抜き取る場合は、def mainがなくてもいけるかもしれませんが・・・ ありがとうございました。def mainで対応いたします。
mushroominger

2019/09/23 11:07

やればできる! 試してみてから質問しましょう
goki_gottan

2019/09/23 11:10

import pyinstaller_test_2 import pyinstaller_test_3 import tkinter as tk root = tk.Tk() button1 = tk.Button(root, text='button1', command=pyinstaller_test_2).pack(fill='x') butoon2 = tk.Button(root, text='button2', command=pyinstaller_test_3).pack(fill='x') root.mainloop() と、def関数を消してやってみましたが・・・ ---------------------- print('def test2') print('def test3') ------------------
mushroominger

2019/09/23 11:14

pyinstaller_test_2と3のdef test():を消してはダメですよ
goki_gottan

2019/09/23 11:20

今回やりたかったことは、ボタンを押すことで、ファイル2を実行することですので、 defで対応いたしますね。そのまま、構文を使わせていただきます。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問