はじめに
Pythonでちょっとした社内向けツールを作って、「使ってもらいながら改良したい!」と思ったこと、ありませんか?
プロトタイプを配布してフィードバックをいただくことは、開発サイクルを加速させるうえでとても有効です。
しかし、いざ渡そうとすると色々な課題が出てきます。
- 環境構築が面倒
- exe化が難しい
- 配布後のアップデートが大変
本記事では、社内ユーザーにPythonツールを配布する際の選択肢をまとめました。
各方法の詳細については、花王アドベントカレンダーの他の記事でも紹介されていますので、ぜひ併せてご覧ください!
配布方法の選択肢
1. ユーザーPCにPython環境を構築してもらう
いきなりですが、これはあまり推奨しません。
メリット
- ソースコードの修正が容易
デメリット
- 初期導入のハードルがある
- PC環境が汚れる
- conda系を使う場合、Anaconda有償要件への注意が必要
2. PyInstallerで実行ファイル化
PyInstallerなどのexe化ライブラリを使用することで、PythonスクリプトをPython不要の実行ファイルに変換できます。
方法
pip install pyinstaller
pyinstaller main.py --onefile
メリット
- 単一ファイルで配布できるため、ユーザーは実行が容易
- 主要OSをサポート
デメリット
- 使用するライブラリによっては起動が重くなる
- ファイル更新時に再パッケージ化が必要
- セキュリティソフトにブロックされる可能性あり
- Streamlitアプリのexe化はやや設定が面倒 → Streamlit Desktop Appで解消!
3. Embeddable Pythonでポータブル環境配布
Embeddable Pythonを使うと、インストール不要で動作するポータブルなPython実行環境をフォルダとして配布することができます。
方法(参考記事)
- Python公式サイトから Windows embeddable package を取得
- pipを有効化
- 実行用のバッチファイルを作成
メリット
- 相手のPCを汚さず、Python実行環境を配布できる
- ソースコードの修正が容易
- exe化より軽量
デメリット
- pipの有効化に手間がかかる
- Windowsのみ対応
4. python-build-standaloneでポータブル環境配布
基本的にはEmbeddable Pythonと同じですが、以下のような特徴があります。(参考記事)
- uvやRyeでも使われているディストリビューション
- pipが最初から入っている
- Windows以外のOSにも対応
5. Stlite(Streamlitをブラウザ単体で動かす)
Stliteは、サーバーレスでStreamlitアプリをブラウザ上で実行できる仕組みです。
HTMLファイル内にStreamlitコードをほぼそのまま埋め込むだけで使えます。
方法
- 公式GithubやStlite Sharingのテンプレートを参考に、HTMLファイルにStreamlitのPythonスクリプトを埋め込む
メリット
- 単一ファイル(HTML)で配布できるため、ユーザーは実行が容易
- ソースコードの修正が容易
- ブラウザで動作するため、OS依存なし
デメリット
- Pyodide対応ライブラリのみ使用可能(PyTorchなどは非対応)
まとめ
この記事では、Pythonツールを手軽に配布する方法をまとめました。
プロトタイプの試行錯誤という観点では、以下の方法がおすすめです。
- シンプルなStreamlitアプリの配布は、Stliteが便利(ライブラリが対応している場合)
- Stlite非対応ライブラリを使用する場合やStreamlitを使わない場合は、python-build-standaloneなどのフォルダ配布が有効