🔥
python軽量exeライブラリNuitkaが本当か検証してみた。
はじめに
以前、「pyinstaller」でexe化する方法をご紹介しました。
今回は、「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 |
---|---|
8,710KB | 24,382KB |
Discussion
検証ありがとうございます。
『軽量化といわれておりますが、今回検証した結果は「Nuitka」の方が軽量でした!』
とありますが、ここは「Pyinstaller」の間違いでしょうか?
記事ありがとうございます。参考になりました。
2024/8/11に追随してみたところ、Nuitkaのほうが25%ほど小さいファイルが生成されました。
PyInstaller 10,827 KB, Nuitka 7,966 KB
環境の違いなどあるかもしれません、今回試した環境は以下の通り:
Nuitka: 2.4.5
PyInstaller: 6.10.0, contrib hooks: 2024.8
Python: 3.12.4 (Windows 11)