Pythonで書いた簡単なスクリプトを手軽に共有したいとき、ユーザー側のPython環境は悩みの種です。
- Pythonのインストールは面倒
- パッケージのインストールはもっと面倒
- PyInstaller はウィルス誤検知されるし起動が遅い
- Nuitka はビルドが大変
- 本家Pythonの Embeddable Package はpipが入ってない
これらを解決してくれる python-build-standalone というプロジェクトがいつの間にか爆誕していました。
実は、uv のPythonのインストールや実行が速いのはこのディストリビューションを使っているからだそうです。
python-build-standalone とは?
- 完全にポータブルなPython環境(レジストリや環境変数に依存しない)
- 超高速な起動(パス探索や動的読み込みを省き最適化)
- pipによるパッケージ追加も簡単
- ユーザーはフォルダを解凍するだけで即使える
導入方法
ダウンロード
リリースページ から目的のシステム向けのビルドを入手します。
ファイルが多くて面食らいますが、
- Pythonバージョン
- CPUアーキテクチャ
- OS
- ビルドのバリエーション
を選んでダウンロードします。
ビルドのバリエーションは下記どちらかを使えば問題ないでしょう。
-
install_only
: 標準的な最小構成 -
install_only_stripped
: デバッグ機能を省いたさらに軽量なもの
今回は cpython-3.12.11+20250612-x86_64-pc-windows-msvc-install_only.tar.gz
を使います。解凍すると下記のようになります。
# 主要なファイル以外は省略
project/
└─ python/
├─ python.exe
├─ python312.dll
├─ Lib/
└─ DLLs/
pipパッケージのインストール
pipが付属しているので簡単にインストールできます1。
cd python
.\python.exe -m pip install -U pip
.\python.exe -m pip install requests
実行
「それだけ?」って感じですが、既にちゃんと python.exe main.py
で実行できるようになっています。
import requests
input("import successful!")
> .\python.exe main.py
import successful!
配布
社内ツールなら、下記のようなフォルダ構成にしておいて、
project/
├─ python/
├─ src/main.py
└─ run.bat
起動用のバッチファイルには下記のようにでも書いておけばOKです。
python\python.exe src\main.py %*
これだけで、パッケージも含めたPython環境と一緒にツールを配布できます。起動も爆速!ぜひお試しあれ。
-
パッケージは
python\Lib\site-packages
にインストールされます。 ↩