ホーム
ゲーム開発
Unity
UnrealEngine
C++
ゲーム数学
ゲームAI
サウンド
アニメーション
GBDK
制作日記
3DCG
Houdini
Blender
USD
グラフィックス
テクノロジ
生成AI関連
動画制作
ツール開発
フロントエンド関連
サーバサイド関連
ソフトウェア設計
ハードウェア関連
おすすめ技術書
音楽
DTM
楽器・機材
ピアノ
その他
ブログについて
都会のエレキベア
ラーメン日記
四コマ漫画
おすすめアイテム
おもしろコラム
お問い合わせ
  • ゲーム開発
    • Unity
    • UnrealEngine
    • C++
    • ゲーム数学
    • ゲームAI
    • サウンド
    • アニメーション
    • GBDK
    • 制作日記
  • 3DCG
    • Houdini
    • Blender
    • USD
    • グラフィックス
  • テクノロジ
    • 生成AI関連
    • 動画制作
    • ツール開発
    • フロントエンド関連
    • サーバサイド関連
    • ソフトウェア設計
    • ハードウェア関連
    • おすすめ技術書
  • 音楽
    • DTM
    • 楽器・機材
    • ピアノ
  • その他
JP|EN
  1. ホーム
  2. 20210822_01

【Python】Pythonスクリプトをexe、app化する【cx_Breeze】

ツール開発Python
2021-08-29

マイケル
マイケル
みなさんこんにちは!
マイケルです!
エレキベア
エレキベア
クマ〜〜〜〜
マイケル
マイケル
今日はPythonファイルをexe、app化する方法について紹介するよ!
エレキベア
エレキベア
そんな方法があったクマね
マイケル
マイケル
Pythonスクリプトをexe化するライブラリとしては

・Pyinstaller
・cx_Freeze

が有名だけど、今回は動作が速いが情報が少ない
と言われる cx_Freeze を使ってみます!

cx_Freeze 公式ドキュメント

エレキベア
エレキベア
英語で読めないクマ・・・
マイケル
マイケル
とりあえず触っていこう!

cx_Freezeのインストール

マイケル
マイケル
まずcx_Freezeのインストールについては簡単で、
下記のようにpipコマンドでインストールするだけですね!
pip install cx_Freeze
↑cx_Freezeのインストール
エレキベア
エレキベア
簡単クマ〜〜〜

クリッカーアプリのexe、app化

マイケル
マイケル
インストールができたら早速使っていきましょう!
まずは下記のシンプルなクリッカーアプリをexe化してみます!
import tkinter as tk
from tkinter import ttk


# クリッカー
class ClickerWindow(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master.geometry("250x250")
        self.master.title("Clicker")
        # ラベル
        self.label = ttk.Label(self.master, text="0", font=("Times New Roman", 80))
        self.label.pack(anchor="center", pady=40)
        # ボタン
        self.button = ttk.Button(self.master, text="CLICK", command=self.click_btn)
        self.button.pack(anchor="center")

    # ボタン押下でインクリメント
    def click_btn(self):
        i = int(self.label["text"]) + 1
        self.label["text"] = str(i)
        self.label.update()


if __name__ == "__main__":
    root = tk.Tk()
    app = ClickerWindow(master=root)
    app.mainloop()

↑クリッカーアプリ
マイケル
マイケル
exe化するには、Pythonスクリプトのディレクトリにsetup.pyという設定ファイルを記述する必要があります。
書き方は下記の公式ドキュメントを参照しましょう!

setup script – cx_Freeze

エレキベア
エレキベア
いろんなオプションがあるクマね

Windows

マイケル
マイケル
exeファイルはWindowsで実行することで作成できます。
マイケル
マイケル
setup.pyの一番シンプルな書き方は下記になります。
今回のアプリは公式ページの記述から、アプリ名と読み込むスクリプト名のみ変更するだけで良さそうです。
import sys
from cx_Freeze import setup, Executable

build_exe_options = {"packages": ["os"], "excludes": []}

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(
    name="clicker",
    version="0.1",
    description="My GUI application!",
    options={"build_exe": build_exe_options},
    executables=[Executable("main.py", base=base)]
)
↑setup.pyの記述
マイケル
マイケル
このファイルを作成したディレクトリで
python setup.py build コマンドを実行しましょう!
// EXEファイルの作成 
python setup.py build
マイケル
マイケル
実行するとディレクトリにbuildフォルダが作成され、
その中にexeファイルが出力されます。

↑exeファイルが出力される
エレキベア
エレキベア
これだけで出力されるクマか
マイケル
マイケル
実行しても下記のように正常に起動するかと思います!

↑exeファイル実行結果

Mac

マイケル
マイケル
同じようにappファイルも作成してみましょう!
setup.pyについてはWindowsと同様になります。
import sys
from cx_Freeze import setup, Executable

build_exe_options = {
    "packages": ["os"],
    "excludes": [],
}

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(
    name="clicker",
    version="0.1",
    description="My GUI application!",
    options={"build_exe": build_exe_options},
    executables=[Executable("main.py", base=base)]
)
マイケル
マイケル
そしてappファイルを作成するコマンドは python setup.py bdist_mac になります。
このコマンドを実行すると、 実行ファイル作成 -> appファイルとしてまとめる 処理を流れで行ってくれます。
// APPファイルの作成
python setup.py bdist_mac
マイケル
マイケル
実行すると、こちらもbuildフォルダ配下にappファイルが作成されていることが分かります。
マイケル
マイケル
実行しても正常に動かすことができました!
エレキベア
エレキベア
ちょろいクマ〜〜〜

パズルゲームのexe、app化

マイケル
マイケル
シンプルなクリッカーアプリで試してみましたが、
今度はもう少し複雑なアプリをexe化してみましょう!
マイケル
マイケル
というわけで、以前作ったPythonのパズルゲームをexe化してみようと思います。
エレキベア
エレキベア
(なつかしいのを出してきたクマ・・・。)

Windows

マイケル
マイケル
とはいえ、setup.pyの記述は基本的にはクリッカーアプリと同じになります。
しかし今回は画像ファイルを読み込む必要があるため、include_filesに画像ファイルのフォルダを指定 することで画像ファイルも同梱しています。
import sys
from cx_Freeze import setup, Executable

include_files = [
    ('C:\\workspace\\PycharmProjects\\akeomePuzzle\\Resources\\images', '')
]

build_exe_options = {
    "packages": ["os"],
    "excludes": [],
    "include_files": include_files
}

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(
    name="akaomePuzzle",
    version="0.1",
    description="My GUI application!",
    options={"build_exe": build_exe_options},
    executables=[Executable("akeomePuzzle.py", base=base)],
)
↑画像ファイルのinclude
マイケル
マイケル
合わせてPythonスクリプトも少し修正します。
画像ファイルを実行ファイルのパスから読み込む必要があるため、下記のようにパスを指定するよう修正しました。
# 画像の取得(実行ファイルからの相対パス)
images_path = os.path.join(os.path.dirname(sys.argv[0]), "images")
bg = tkinter.PhotoImage(file=os.path.join(images_path, "ball_bg.png"))
↑画像読み込みパスの修正
マイケル
マイケル
この状態で python setup.py build を実行すると、
Exeファイルのディレクトリにimagesフォルダも同梱されることが確認できます。

↑imagesフォルダも同梱される

マイケル
マイケル
exeファイルを実行すると、正常に起動することができました!
エレキベア
エレキベア
やったクマ〜〜〜

Mac

マイケル
マイケル
Macのsetup.pyも同じように作成します。
include_filesに画像ファイルパスを指定しましょう!
import sys
from cx_Freeze import setup, Executable

include_files = [
    ('/Users/molegoro/workspace/PycharmProjects/games/akeomePuzzleApp/Resources/images', '')
]

build_exe_options = {
    "packages": ["os"],
    "excludes": [],
    "include_files": include_files
}

bdist_mac_options = {
    "iconfile": "/Users/molegoro/workspace/PycharmProjects/games/akeomePuzzleApp/Resources/images/ball_gold.png",
}

base = None
if sys.platform == "win32":
    base = "Win32GUI"

setup(
    name="akaomePuzzle",
    version="0.1",
    description="My GUI application!",
    options={"build_exe": build_exe_options, "bdist_mac": bdist_mac_options},
    executables=[Executable("akeomePuzzle.py", base=base)],
)
↑画像ファイルパスの指定
マイケル
マイケル
今回はついでにアイコンパスを指定してみました。
appファイル作成はbdist_mac_optionsオプションで指定することができます。
※手抜きのためアイコンはpngファイルを指定していますが、本来は「.icns」拡張子のものを用意して指定しましょう!
マイケル
マイケル
この状態で python setup.py bdist_mac コマンドを実行すると、appファイルが作成されます。
エレキベア
エレキベア
imagesフォルダはどこにあるクマ??
マイケル
マイケル
いいところに気がついたね!
Includeされたフォルダは、下記のように「~.app/Contents/MacOS」の中に格納されているよ!
Appファイルはこのように実行ファイル等を同梱しているんだね。

↑appファイルの中に同梱される
マイケル
マイケル
実行もこのようにうまくいきました!
エレキベア
エレキベア
だいぶ分かってきたクマ〜〜〜

おわりに

マイケル
マイケル
というわけで今回はcx_Freezeを使ってみました!
どうだったかな?
エレキベア
エレキベア
思ったより手軽にexeファイル化できて感心したクマ
マイケル
マイケル
今回の例は簡単だったけど、使用するライブラリが増えてくると、
setup.pyの内容も複雑になってくるかと思います!
そういった深いところは地道にエラーログを見ながら対処していくしかなさそうだね・・・
エレキベア
エレキベア
本当の勝負はこれからクマね・・・
マイケル
マイケル
とはいえ作ったツールをちゃんとexe、app化できると気持ちいいね!
これから積極的に使っていこう!
マイケル
マイケル
それでは今日はこの辺で!
アデュー!!
エレキベア
エレキベア
クマ〜〜〜〜〜

【Python】Pythonスクリプトをexe、app化する【cx_Breeze】 〜完〜


ツール開発Python
2021-08-29
記事をSNSで共有する
X
Facebook
LINE
はてなブックマーク
Pocket
LinkedIn
Reddit

著者の各種アカウント
フォローいただけると大変励みになります!

関連記事
【PySide6】Whisperで文字起こし・歌詞の表示時刻を取得するGUIツールを作る【Whisper Toolkit】
2026-09-07
【Node.js】Amazonアソシエイトリンクの取得をPA-APIからCreators APIに移行する
2026-07-20
【PySide6】スクリプトを登録・実行できる汎用Launcherツールを作る【Command Launcher】
2026-06-07
【OpenUSD】USD入門 その2:PythonでUSDを生成・操作してみる
2025-12-29
【OpenUSD】USD入門 その1:概要とデータ構造についてまとめる
2025-12-25
【VSCode】ドラッグ&ドロップで画像ファイルをリサイズ・保存する拡張機能を作る
2025-11-22
【プロシージャル】Pythonで学ぶ波動関数崩壊アルゴリズム(Wave Function Collapse)
2025-06-22
【Unity】Timeline × Excelでスライドショーを効率よく制作する
2024-10-31