Pyinstallerめも
基本的な使い方と容量を抑えるやり方…
忘れないうちにメモしておく。
そもそもPyinstallerって何よ?
Pythonってスクリプト言語やん。基本的には環境が無いと実行できないわけ。おまけになんやかんやインポートしてるから、実行環境があってもいちいちパッケージをインストールしなくちゃいけないの。
や、別にわざとじゃ無いんだよ?そういうものなんだよ?だから怒んなって、そいつらをひとまとめにして実行できるいい方法教えてやるから。。ヤッター
ってのがPyinstallerの大雑把な仕様。
使用例
・導入方法例
pip install pyinstaller
・実行例
pyinstaller hoge.py
ちょっと長いけどガマン
これで大抵の場合はexeファイルが生成されて、スタンドアロンに実行できるようになる。
Mac版も同様。(うまくいかない時もある)
応用例
でも、ファイル大杉大歩危阿波池田
そんなときは以下を試してみましょう。
・ファイルをひとまとめにする例
pyinstaller --onefile hoge.py
・何が取り込まれてるか調べたい例
pyinstaller -F --onedir hoge.py
Pyinstallerは勝手に余計なものまで入れちゃうクソ野郎賢い子なので、要らないものを見てみるときに使える。
何度もビルドしていると肥大化しまくる。知らん間にPyQt4とか入ってたり…
・以上を踏まえてカスタムビルドしたい例
pyinstaller hoge.spec
specファイルはプログラムのビルド方法をまとめる仕様書みたいなものです。
こいつにいろいろ書き込んで上記コマンドを実行すれば、幅を利かせてビルドすることが可能です。わーい
specファイル?
ビルド毎にspecファイルが上書きされる。
ソースファイルでビルドするとデフォルトの状態になっちゃうので注意。
↓特に指定なしだとこんなのができる
# -*- mode: python -*-
block_cipher = None
a = Analysis(['hoge.py'],
pathex=['パス'],
binaries=[],
datas=[],
hiddenimports=[],
hookspath=[],
runtime_hooks=[],
excludes=[],
win_no_prefer_redirects=False, win_private_assemblies=False,
cipher=block_cipher)
pyz = PYZ(a.pure, a.zipped_data,
cipher=block_cipher)
exe = EXE(pyz,
a.scripts,
a.binaries,
a.zipfiles,
a.datas,
name='hoge',
debug=False,
strip=False,
upx=True,
runtime_tmpdir=None,
console=True,
icon='hoge.ico')
datas: 画像等を埋め込む場合に使う
hiddenimports: インポートしないパッケージ
ほかにも色々あるけど、まだちょっと何言ってるかわかんない。
hooksとか理解できればもっとよさげかも
ビルドエラー対処法
まず、何でつまづいているのか?
エラー文をよく読むことで大体は解決する。
どうやっても解決しないあるある
・特定のパッケージ内でのコードエラー
相性が悪いんで別の方法を考えましょ(投げ)
(望み薄だが、Pyinstallerのダウングレードやアップデートで直ったりするかも)
参考
Pyinstallerマニュアル
もっと分かりやすくまとめている方↓
Pythonスクリプトを単一実行ファイルにする方法
わ、わかりやすい…