PyInstallerでexeを作る
PyInstaller を利用すると、Python のコードを exe 化して
Python をインストールしなくても単独のツールとして利用できるようになります。
基本的な使い方¶
まず、使うときには pip で pyinstaller をインストールします。
1 |
|
インストールしたら、
1 |
|
このように実行すると、
コマンドプロンプトのカレントディレクトリ以下に、 \<toolName>.spec ファイル、 build dist フォルダが作成され
dist フォルダ以下に、exe が作成されます。
1 |
|
デフォルトだと toolName.exe 以外にも各種 dll などが同じフォルダに作成されますが
--onefile を追加することで
1つの exe に固めることができます。
spec ファイルを編集する¶
基本はこれで OK ですが、
例えば python ファイル以外に、追加でファイルが必用な場合(画像、ui ファイル等)は
別途 exe と同じフォルダにファイルをコピーしないといけないので
そのような場合は spec ファイルを編集します。
sample.txt | |
---|---|
1 |
|
samplecode.py | |
---|---|
1 2 |
|
例えば、同じフォルダ以下にある sample.txt をプリントするようなコードを exe にする場合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
追加するのは、 datas の配列で
この配列に (ファイル名,コピー先) のタプルを入れることで、ファイルをコピーすることができます。
onefile の場合¶
注意が必要なのが、 onefile の場合。
この場合、1つにまとめたファイルをいったん _MEIPASS に展開する都合、
相対パスで指定してしまうとエラーになります。
https://stackoverflow.com/questions/7674790/bundling-data-files-with-pyinstaller-onefile
その場合は、ファイルパスの取得をするための関数を用意して
pyinstaller で固められている場合は、MEIPASS を指定するようにする必要があります。