Skip to content

Python を exe 化する方法:Runcell・PyInstaller・Nuitka・cx_Freeze で EXE に変換する

更新日

Runcell のブラウザツールで Python を exe 化する手順と、PyInstaller・Nuitka・cx_Freeze の違いを解説します。すぐ試せるサンプルスクリプトと、Windows で使えるパッケージ化コマンド付きです。

Python を exe 化するなら、まず Runcell の Python to EXE 変換ツール (opens in a new tab) を使いましょう。.py ファイル、プロジェクトのフォルダ、または ZIP を追加し、アプリを起動するスクリプトを選び、依存パッケージを確認してから Build Windows EXE を選択します。できたファイルをダウンロードすれば、Python をインストールしていない Windows ユーザーにもそのまま渡せます。

EXE は、プログラムと、その実行に必要なランタイムやファイルをひとまとめにしたものです。script.py を script.exe にリネームしても EXE にはなりません。このガイドでは、まず Runcell での手順を説明し、ブラウザがどうやってバイナリを生成するのかを解説したうえで、ローカルで使える3つのパッケージングツールのコマンドを紹介します。なお、Runcell は Kanaries の製品で、ブラウザで完結する方法として私たちがおすすめしているものです。

トレンド記事

Python を exe 化する方法を選ぶ

方法向いているケースビルドする場所
Runcell (opens in a new tab)(第一のおすすめ)コンソール(コマンドライン)のスクリプトやプロジェクトがあり、パッケージングツールをインストールせずに Windows x64 の EXE を作りたいブラウザ上(自分のデバイス内)
PyInstallerPython のコマンドでフォルダ形式または単一の実行ファイルを作りたい。あるいは GUI アプリ(Tkinter、PySide/PyQt)をパッケージ化したいWindows 用にビルドするなら Windows の Python 環境
NuitkaPython をコンパイルし、ネイティブのコンパイラー環境を自分で構成したいWindows の Python 環境と、対応する C コンパイラー
cx_Freezeアプリケーションのフォルダを配布し、ビルド設定を自分で管理していきたいWindows 用にビルドするなら Windows の Python 環境

以下のコマンドは Windows PowerShell を前提にしています。パッケージングツールを自分でセットアップする必要があるのは、ローカルでビルドする方法だけです。

方法1:Runcell で Python を exe 化する

小さく再現しやすいスクリプトから始める

次のサンプルを receipt.py として保存します。レシートを表示して合計金額を計算し、Enter キーが押されるまで待つので、ダブルクリックで開いたコンソール画面がすぐに閉じません。サードパーティの依存パッケージや追加ファイルはありません。

items = {"Notebook": 19.50, "Cable": 8.25, "Stand": 12.25}
 
print("Receipt")
for name, price in items.items():
    print(f"{name}: ${price:.2f}")
 
print(f"Total: ${sum(items.values()):.2f}")
input("Press Enter to close...")

Python がすでにインストールされているなら、パッケージ化する前にソースコードの動作を確認しておきましょう。

python receipt.py

合計は Total: $40.00 と表示されるはずです。Enter キーを押すと終了します。初めてスクリプトを実行する場合は、Python スクリプトの実行方法 でターミナルの準備から説明しています。

プロジェクトを追加してビルドする

  1. Runcell の Python to EXE 変換ツール (opens in a new tab) を開き、ページ内の変換ツールまで移動します。
  2. receipt.py ファイルを選びます。既存のコンソールアプリケーションの場合は、使っているモジュールやリソースを含めたプロジェクトのディレクトリ、または ZIP を選んでください。
  3. エントリースクリプトとして receipt.py を選択します。大きなプロジェクトでは、ふだんアプリケーションを起動するときに実行するスクリプト(main.py など)がこれにあたります。
  4. 検出された import、依存パッケージ、同梱ファイルを確認します。レシートのサンプルでは追加のパッケージは不要です。自分のアプリでは、必要なアセットやパッケージのバージョンが、配布したいプロジェクトと一致しているかを確認してください。Runcell のランタイムは Python 3.14 なので、各パッケージには Windows の Python 3.14 で動く wheel(cp314、abi3、または pure Python の wheel)が必要です。
  5. Build Windows EXE を選択し、生成された実行ファイルをダウンロードします。配布する前に Windows で開き、レシートの出力を確認してください。

私たちがブラウザで試したところ、Runcell は receipt.exe を生成し、ダウンロードできました。ファイルヘッダーから Windows x64 の実行ファイルであることも確認しています。ただし、この EXE を Windows 上で実行してはいません。

複数のファイルからなるプロジェクトでは、ディレクトリ構成をそのまま保ってください。たとえば templates/invoice.html から読み込むテンプレートは、アプリケーションが想定しているパスに含める必要があります。

ブラウザで Windows の EXE を生成できる仕組み

Runcell 独自のパッケージングエンジンは、コンパイル済みの Windows ランチャー、Python ランタイム、プロジェクトのファイル、依存パッケージを組み合わせます。これらをデバイス上でまとめ、ダウンロードできる .exe にします。Windows 側のコンポーネントはすでにコンパイルされているため、ローカルで Windows のコンパイラーを動かさなくても、ブラウザで最終的なバイナリを組み立てられます。

処理は次の2段階に分かれています。

Your Python project + dependencies
                +
Python runtime + precompiled Windows launcher
                |
                v
Runcell assembles the EXE in your browser
                |
                v
Download the file, then run it on Windows

ファイルを生成することと、それを実行することは別の操作です。ブラウザが実行ファイルを組み立て、完成したアプリケーションを Windows が実行します。このパッケージングの流れは Runcell の仕組みの解説 (opens in a new tab) に書かれています。

デバイスの外に出ないもの

Runcell は EXE をブラウザ内でビルドします。組み込みの Windows ランタイムに含まれないモジュールをプロジェクトが import している場合は、ビルドの前に変換ツールが知らせてくれます。その import を削除するか、後述のローカルのパッケージングツールを使ってください。

ビルド中、ソースコードや秘密情報はデバイスの外に出ません。ただし、完成した EXE にはコードが含まれます。他人に渡したくない秘密情報は同梱しないでください。

方法2:PyInstaller でローカルにビルドする

PyInstaller (opens in a new tab) は、スクリプトとその import、Python ランタイムを集めて、配布できるアプリケーションにします。PyInstaller は実行した OS 向けにビルドするので、Windows 用の EXE を作るなら Windows 上で実行してください。

receipt.py があるフォルダで PowerShell を開きます。仮想環境 を作り、そこに PyInstaller をインストールします。python.org からインストールした Python なら、python が PATH に入っていなくても py ランチャーが使えます。また、仮想環境の Python を直接呼び出せば、有効化(activate)の手順を省けます。

py -m venv .venv
.\.venv\Scripts\python.exe -m pip install pyinstaller
.\.venv\Scripts\python.exe -m PyInstaller --onefile receipt.py

できあがるのは dist\receipt.exe です。PowerShell から実行すると出力を確認できます。

.\dist\receipt.exe

自分のプロジェクトをビルドするときは、先に同じ環境へ依存パッケージをインストールしておきます。requirements.txt があれば .\.venv\Scripts\python.exe -m pip install -r requirements.txt を使います。

大文字・小文字を区別する -m PyInstaller という呼び出し方は、インストールガイド (opens in a new tab) に記載されています。この方法なら、パッケージングツールと依存パッケージが同じ Python 環境に揃います。

コンソール、GUI、フォルダ形式から選ぶ

receipt.py は print() と input() を使うので、コンソールモードのままにします。すべての操作を独自のウィンドウで行う GUI アプリケーションなら、--windowed でコンソールを非表示にできます。アプリケーションと付随ファイルをフォルダの中で確認したいときはまず --onedir を使い、1つのファイルで配布したいときは --onefile にします。詳しくは PyInstaller のオプション一覧 (opens in a new tab) を参照してください。

assets ディレクトリを同梱するには、明示的に追加します。

.\.venv\Scripts\python.exe -m PyInstaller --onefile --add-data "assets:assets" receipt.py

この例は、assets フォルダを作成済みであることを前提にしています。同梱した読み取り専用ファイルのパスは、PyInstaller のランタイムガイド (opens in a new tab) にあるとおり __file__ を基準に解決してください。パスの操作については Python pathlib のガイド で説明しています。

方法3:Nuitka でコンパイルしてパッケージ化する

Nuitka (opens in a new tab) は Python をコンパイルし、配布できるアプリケーションを作れます。コンパイラーを使ったビルドを細かく制御したいときに選びます。対応する C コンパイラーが必要で、Windows ではマニュアルに Visual Studio 2022 以降が選択肢の1つとして挙げられています。また、MinGW64 は実験的なフラグなしでは Python 3.13 以降で動作しないとマニュアルに書かれているため、最近の Python では Visual Studio Build Tools をインストールしておきましょう。

同じように仮想環境を作り、Nuitka をインストールして onefile モードを指定します。

py -m venv .venv
.\.venv\Scripts\python.exe -m pip install nuitka
.\.venv\Scripts\python.exe -m nuitka --mode=onefile receipt.py

Windows では receipt.exe が出力される想定です。配布用のフォルダ形式がよければ --mode=standalone を使います。どちらかのモードを必ず明示してください。Nuitka のデフォルトの accelerated モードは、Python が入っていないマシンにアプリケーションを配布するためのモードではありません。コンパイラーのセットアップやパッケージごとのオプションは、公式マニュアルに従ってください。

方法4:cx_Freeze でアプリケーションフォルダを作る

cx_Freeze (opens in a new tab) は通常、実行ファイルと、それが必要とするライブラリを含むディレクトリを作ります。設定を固めたアプリケーションのビルドを管理し、フォルダごと配布したい場合に選びます。

同じように仮想環境を作り、パッケージをインストールしてコマンドラインのビルダーを実行します。

py -m venv .venv
.\.venv\Scripts\python.exe -m pip install cx-Freeze
.\.venv\Scripts\cxfreeze.exe --script receipt.py --target-dir dist

これは現行の cxfreeze コマンドリファレンス (opens in a new tab) に沿ったものです。EXE だけをコピーするのではなく、ライブラリを含む dist フォルダ全体を配布してください。プロジェクトの設定を繰り返し使えるようにしたい場合、cx_Freeze は pyproject.toml や Python のセットアップスクリプトにも対応しています。

配布する前に結果を確認する

受け取る人の環境に近い Windows マシンで、アプリケーションを実行します。このサンプルでは、各商品の価格、合計の $40.00、Enter キーの入力待ちを確認してください。Python を別途インストールしていないマシンで試すと、ランタイムと依存パッケージがきちんと含まれているかを確かめられます。

大きなアプリでは、入力ファイルを選んでレポートを保存するなど、受け取る人が実際に行う操作を試してください。コンソール画面がすぐに閉じてしまう場合は、PowerShell から EXE を起動するとエラーを読めます。画像やテンプレートが見つからない場合は、パッケージに含めたファイルと、それを読み込むパスの両方を確認します。動的な import は、ローカルのパッケージングツールのオプションで明示的に含める必要があるかもしれません。

どのツールで作った EXE でも、署名がないと、初めて開いたときに Microsoft Defender SmartScreen の警告が出ることがあります。その場合、受け取った人は More info を選び、続いて Run anyway を選択します(日本語版 Windows では「詳細情報」→「実行」と表示されます)。

よくある質問

パッケージングツールをインストールせずに .py ファイルを .exe に変換するには?

Runcell の Python to EXE 変換ツール (opens in a new tab) を使います。Python ファイル、フォルダ、または ZIP を選び、エントリースクリプトを指定し、依存パッケージを確認してから、ブラウザで Windows 用の EXE をビルドします。

本当にブラウザで Windows の実行ファイルを生成できるのですか?

できます。Runcell は、コンパイル済みの Windows コンポーネント、Python ランタイム、アプリケーションをブラウザ内で組み合わせて EXE にします。そのファイルをダウンロードし、Windows で実行します。バイナリを生成するために、ブラウザが Windows アプリケーションを実行する必要はありません。

EXE を実行する人は Python をインストールしておく必要がありますか?

ランタイムと必要な依存パッケージを含めてアプリケーションを配布すれば、Python を別途インストールする必要はありません。Runcell のパッケージング手順にはランタイムが含まれています。ローカルのツールでフォルダ形式にビルドした場合は、出力フォルダ全体を渡してください。

PyInstaller で単一の EXE を作るコマンドは?

PyInstaller とプロジェクトの依存パッケージをインストールした Windows 環境で、python -m PyInstaller --onefile receipt.py を実行します。このサンプルでは dist\receipt.exe が出力されます。

出典と検証方法

Runcell の手順とパッケージングの仕組みは、2026年11月4日に確認した 公開されている製品ガイド (opens in a new tab) に基づいています。ローカルでのビルドコマンドは、各方法でリンクした公式ドキュメントに従っています。私たちはレシートのサンプルを macOS で実行し、公開中の Runcell 変換ツールで選択して receipt.exe を生成・ダウンロードし、Windows x64 の PE ヘッダーを確認しました。また macOS 上で、PyInstaller 6.22.3(--onefile)と cx_Freeze 8.7.4 を使ってレシートのスクリプトをビルドしてコマンドを確かめ、Nuitka のモードオプションもヘルプ出力と照合しました。この記事のために Windows 上で EXE を実行してはいません。

関連ガイド