PythonプログラムをEXE化しよう(PyInstaller最新版対応)

IT

今回掘るテーマ:洞窟の奥に眠る「配布しやすさ」の秘宝 🐾

モグラ先生:今日は 「PyInstaller で .exe を掘り出す大冒険」 に出発じゃ!
Python が入ってない PC でもサクッと動く宝を、いっしょに見つけよう⛏️


なぜ “専用の穴”(仮想環境)が必要?

  • PyInstaller は環境にあるライブラリを丸ごと詰め込むため、不要パッケージが多いと実行ファイルがブクブク膨らむ🐡。

モグラ先生:小さな穴から掘り始めるのがコツ。最小構成の仮想環境で身軽になろう!


モグラ流・PyInstaller 掘削手順 ⛏️

1. 軽量仮想環境を作成

# Windows
python -m venv .venv
.venv\Scripts\activate
# macOS / Linux
python3.12 -m venv .venv
source .venv/bin/activate

モグラ先生:「activate を忘れて巨大ファイル量産」は定番の落とし穴やで!

2. 必要最小限のライブラリだけインストール

pip install --upgrade pip
pip install requests pandas scikit-learn  # 例
  • ホイール (.whl) を入れる場合も pip で統一しよう。
  • インストール済み一覧は pip list で確認。

3. PyInstaller を導入

pip install pyinstaller

4. 単体 EXE を生成

pyinstaller hello.py --onefile --noconsole
  • --onefile単一ファイル--noconsole黒いコンソール抑制(GUI アプリの場合)。
  • 仮想環境の Scripts/pyinstaller.exe を直接呼ぶとパスの事故が減る。

モグラ先生:エラーが出たら“掘って見つけた!” hidden-import を追加じゃ!

pyinstaller hello.py --onefile --hidden-import sklearn.utils._typedefs

5. 動作確認

生成物は dist/hello.exe。Python 非搭載の PC で実行テストしよう。
Visual C++ 再頒布パッケージが無いと起動しない場合があるので同梱を忘れずに。


小さな穴掘りポイント🪹

モグラ先生:サイズがデカい? UPX 圧縮でギュッと締めるんだ!


よくある落とし穴と救出方法 🐾

症状掘削ポイント
ModuleNotFoundError--hidden-import で手動追加。依存モジュールの import 位置が動的な GUI ライブラリで起こりやすい (How to include dependencies from venv directory when running …)。
出来上がった EXE が 300 MB 以上不要パッケージ除去 → pip uninstall。DLL サイズは UPX 圧縮や古い Python で削減 (Reducing File Size w/ PyInstaller? : r/learnpython – Reddit)。
実行時に DLL エラーVS C++ 再頒布 2015-2022 を同梱。PyInstaller 本体はバンドルしない (PyInstaller Manual — PyInstaller 6.13.0 documentation)。

モグラ先生:DLL エラーは「沼」。公式ドキュメントの “Troubleshooting” を必ずチェックしよう (Using PyInstaller — PyInstaller 6.13.0 documentation)!


覚書:環境の後片付け

# venv を無効化
deactivate

# フォルダごと掃除
rm -r .venv build dist __pycache__ *.spec

モグラ先生:穴を掘ったら埋め戻すのもマナーやで🪣。


まとめ ✨

  • 最小構成の仮想環境で掘りだすと、EXE は軽く・安定する。
  • 困ったら --hidden-importUPX でサイズ&依存性を調整。
  • PyInstaller 6.13 は Python 3.13 まで対応、今後もバージョンアップに注目だ! (Changelog for PyInstaller — PyInstaller 6.13.0 documentation)
  • 「掘って見つけた!」精神でエラーを一つずつ潰し、気軽に EXE を配布しよう。

モグラ先生:さあ、あなたのスクリプトも もぐTech の地下倉庫 から世界へ飛び出す時じゃ!🐾⛏️

タイトルとURLをコピーしました