pythonプログラムのexe化

Pythonで作ったMakeCaptionWithLogo.pyをPythonに不案内なユーザにも使えるようにexe化することにした。

  • exe化にはpyinstallerを使った。pyinstallerをインストール後にコマンドプロンプトで以下のようなコマンドを入力する:
@echo off 
pyinstaller --onefile --exclude-module numpy \
 --exclude-module ..... --exclude-module ..... \
--exclude-module ..... --exclude-module .....  \
 --noconsole --icon=TOMATO.ico MakeCaptionWithLogo.py

ここで–exclude-moduleオプションはexe化で排除しても無害なモジュールを書く。numpyは大きなモジュールでプログラムでnumpyを使っていないときには積極的に排除する。その他のオプションの説明はここにある。

これでdistフォルダにMakeCaptionWithLogo.exeができる。これがこのファイル1つで配布可能なexeファイルである。サイズは約10MB。排除オプションを外すとサイズは約30MB。排除オプションは有効であることがわかる。

  • この手の配布用のexeファイルを作成するときには仮想環境を使うのが普通らしい。そこでPythonの仮想環境で使う開発環境で述べた仕方で仮想環境を作りこの環境下でexe化を行った。インストールしたモジュールはプログラムに必要なものだけした。できるexeファイルのサイズは10MBを切るだろうと期待したが、この仮想環境下でできたexeファイルのサイズは期待に反して約15MBであった。

 

 

Pythonの仮想環境で使う開発環境

ごつい表題であるが、いつも使っているPythonのプログラミング開発環境を仮想環境でもそのまま使いたということである。

  • Python3.10.4がインストールされているwindows10にそれと同じヴァージョンのPythonの仮想環境を作る:

win10のコマンド・プロンプト(CMD)の窓で

python -m venv [環境を作成したいパス]

ここの[環境を作成したいパス]はユーザ領域で構わない。このpathの中にあるScriptsフォルダにあるactivate.batというバッチファイルをCMDの中で実行すると仮想環境が実現する。詳しくはここを参照。

  • いつもはPythonパッケージに付随して配布されているIDLEをプログラミング開発環境として使っている。この環境を仮想環境の下でも使う。インストールされたそのままではリンクが全て実環境を向いているので、それらのリンクを全て(と言っても2つ)を仮想環境に向ける。

そのために実環境を向いたIDELと別に仮想環境を向いたIDELを作る。まずインストールしたIDELのショートカットを新規につくりそれが仮想環境を向いていることを示す任意の名前する。そのプロパティを開き[リンク先]のpath2つを変更する。
変更前

"C:\.....\Python310\pythonw.exe" \ 
"C:\.....\Python310\Lib\idlelib\idle.pyw"

変更後

"C:.....\PythonEnv\MyEnv\Scripts\pythonw.exe" \
"C:.....\PythonEnv\MyEnv\Scripts\sample.pyw"

ここでsample.pywは以下を中身とするファイルでフォルダScriptsに保存したものでありIDLEが起動される時に実行される:

from idlelib.pyshell import main
main()

詳しくはここを参照のこと。

このIDELを使うことによって実環境の時とほぼ完全に同じ開発環境で仮想環境下でのPythonプログラミングができる。