🔥

python軽量exeライブラリNuitkaが本当か検証してみた。

2023/01/09に公開1

はじめに

以前、「pyinstaller」でexe化する方法をご紹介しました。
https://zenn.dev/momiji777/articles/2e733826b32fa6
https://www.youtube.com/watch?v=4IbA14BPQTI

今回は、「Nuitka」というライブラリを用いて作成します。

仮想環境を作成し、ライブラリをインストール

python -m venv exe
.\exe\Scripts\activate
pip install nuitka

exe化するプログラムを作成

実際にexe化していくために、簡単なアプリを作成します。

import tkinter
import tkinter.ttk as ttk

class Application(tkinter.Frame):
    def __init__(self, root):
        super().__init__(root)
        root.title('Sample')
        root.geometry('400x300')
        self.set_widgets(root)

    def set_widgets(self, root):
        select_list = ['SelectA', 'SelectB']
        combobox = ttk.Combobox(root, values=select_list)
        combobox['values'] = ['SelectA', 'SelectB']
        combobox.pack()
        button = tkinter.Button(text="表示",command=lambda:print(combobox.get()))
        button.pack()

def main():
    root = tkinter.Tk()
    app = Application(root)
    root.mainloop()

if __name__ == "__main__":
    main()

作成したプログラムの実行結果はこんな感じになります。

exe化

実際にexe化てみます。まずは、nuitkaで作成してみます。

nuitka hello.py

pythonを保有していないかたも利用できるようにするにはオプションを付ける必要があります。
また、今回は、tkinterを利用しているために。オプションで私用するライブラリを指定する必要があります。

利用するオプション

オプション名 詳細
--standalone pythonが入っていないファイルでも起動できるようにします
--enable-plugin= =の先を利用するライブラリを指定します。--plugin-listをすることで標準で利用できるプラグインを確認することができます
--onefile ファイルを一つにまとめることができます
nuitka --onefile --enable-plugin=tk-inter --standalone test.py

以下のように、exeファイルが作成されました。

作成されたファイルの大きさは、約24MGです。

pyinstallerと比較

軽量化exeと巷で言われている「Nuitka」ですが、本当に軽量化されているか比較してみます。

ライブラリをインストール

pip install pyinstaller

exe化

pyinstaller test.py --hidden-import=tk-inter --onefile

distというディレクトリの中にexeが作成されます。

軽量化といわれておりますが、今回検証した結果は「Nuitka」の方が軽量でした!

結果

やり方が誤っておりましたら、コメントでご教示頂けると幸いです。

Nuitka Pyinstaller
24,382KB 8,710KB

Discussion

negitnegit

検証ありがとうございます。
『軽量化といわれておりますが、今回検証した結果は「Nuitka」の方が軽量でした!』
とありますが、ここは「Pyinstaller」の間違いでしょうか?