Pyinstaller EXE軽量化(肥大化対策)
さまざまなことを実践したが、最も効果ありが仮想化環境を使うことだった。
フォルダ内のPDFファイルを検索し、一つのPDFに結合するプログラムを作成した。配付するためpyinstallerでEXEを作成した。
20行程度のコードから245MBの巨大なEXEができた。起動も非常に遅い。
原因は、使わないライブラリが一緒にパッケージ化されることにあるようだ。
そこで、必要なライブラリに限定し仮想化環境で試したところ、うれしい効果があった。仮想無しと有りをポイントに備忘録としてまとめておきたい。
蛇足ではあるが、Python codeのEXE化ツールは、pyinstallerのほかに、py2exe、py2app、cx_freeze、pyOxidzer、Nuitkaがある。
その中のNuitkaを試してみたが、時間がかかるほか、EXE自体がウィルスとして検疫されるといった事象に阻まれ、それ以上の追及をやめた。
PDFファイルを結合するプログラムを作成。
プログラムと同一フォルダ内に結合対象のPDFを事前に用意することで、プログラムは自動結合する。そのファイル名は入力値で得る。
pyinstallerの実行は、AnacondaPrompt環境で行う。
pyinstallerの実行で、新たにbuildとdistのフォルダが作成される。また、ビルドに必要なspecファイルが作成される。exeはdistフォルダ内に作成される。
ステップ数にして20行に満たないPythonCodeがExeで245MBになる。
これは想定以上の容量である。また、起動に時間がかかり実用的ではない。
右図がPDF結合プログラムの実行画面になる。
起動まで十数秒かかる。
同様のPythonCodeを利用し、仮想化環境でpyinstallerを実行する。
仮想化を利用する場合、仮想化の環境を構築する手当が必要であり、その手順を含む操作を示す。
仮想化環境を構築し、pyinstallerを実行実行する。
操作は、AnacondaPrompt環境で行う。