メインコンテンツへスキップ
見出し画像

Pythonライブラリ(exe化):Pyinstaller

    1.概要

     Pythonスクリプトをexe化するライブラリであるPyinstallerを紹介します。

    [Terminal] 
    pip install pyinstaller
    画像

    2.exe化/Pyinstallerの特徴

     Pyinstallerでは「Python本体」、「必要なライブラリ」、「Pythonプログラム」をひとまとめにしたexeファイルを作成してくれます。よって下記の特徴があります。

    【exe化のメリット/Pyinstallerの特徴】
    ●Pyinstallerでexe化すると環境構築していないPCでも作成したプログラムを使用することが可能です。よって部門内で共有もできます。
    ●exeファイルをダブルクリックするだけでプログラムを実行できます。
    【デメリット】
    ●ファイルサイズが恐ろしく大きくなります(数百MB)
    ●OS依存があるためWindowsとMacでのファイルやり取りはできません。

    3.exe化するサンプルスクリプト

     個人的には頻度が多い処理やGUIツールと合わせて使うと便利だと思うのでサンプルとしてtkinterを使用しました。

     |サンプルコード⦅note_pyinstaller.py⦆は①ファイルパス取得、②取得パスの表示、③終了ボタンをつけただけのシンプルなつくりにしました。

    [note_pyinstaller.py]
    import os
    import tkinter as tk
    import tkinter.ttk as ttk
    import tkinter.filedialog as tkfd
    
    base = tk.Tk() 
    base.title("ファイルパス取得")
    
    class App:
        def __init__(self):
            self.path = None
            
        def findfile(self):
            self.path = tkfd.askopenfile() # ファイルパス取得
            print(f'{os.path.basename(self.path.name)}を選択しました。')
            return self.path
        
        @property
        def getpath(self):
            if self.path != None:
                return self.path.name
    
    app = App()   
    tk.Button(base, text="ファイルを選択", width=30, command=app.findfile).pack()
    tk.Button(base, text='パスを表示', width=30, command=lambda :print(app.getpath)).pack()
    tk.Button(base, text="終了", width=30, command=lambda :base.destroy()).pack()
    
    base.mainloop()
    画像

    4.Pyinstallerでのexe化

    4-1.Pyinstallerのコード

     exe化は下記で実行可能であり必要であればオプションも追加します。

    [Pyinstallerのexe化]
    pyinstaller pyファイル #オプション無し
    pyinstaller pyファイル --onefile --noconsole #オプションあり

    【Pyinstallerのオプション】
    ●--onefile:配布ファイルを1つでまとめる
    ●--noconsole:|コンソール⦅ターミナル⦆画面を表示しない

    4-2.exe化の実演

     今回のケースでは下記で実行しました。

    [terminal]
    pyinstaller note_pyinstaller.py --onefile --noconsole
    画像

    4-3.出力の確認

     完了すると「dist」フォルダ内にexeファイルができております。このexeファイルをダブルクリックするだけで(環境構築していないPCでも)スクリプトの実行ができました。

    画像
    画像

    あとがき

     tkinterでファイルパス取得するの相当手こずった・・・・・・あと最後のは--noconsoleオプションないほうが見やすかったな・・・

     
     

    KIYO

     
     
    普段は製造業で企画/開発/設計しております。記事はプログラミング・機械学習、IoT関係の記事をメインで作成し、なるべく1つの記事で知りたいことを網羅していきます。内容は学術的より実装・アウトプット(ほしくなるもの)を重視して作成しています。 面白そうな仕事があればやりたいです!

    あなたへのおすすめ