[Python] PyInstaller以外のexe化ツールまとめ

Pythonスクリプトを実行可能なexeファイルに変換する際、PyInstaller以外にもいくつかのツールがあります。

cx_Freezeは、PythonスクリプトをWindows、Mac、Linuxで実行可能な形式に変換できるクロスプラットフォームのツールです。

py2exeは、Windows専用で、Pythonスクリプトをexeファイルに変換するための古くからあるツールです。

PyOxidizerは、Rustで書かれた新しいツールで、Pythonアプリケーションをスタンドアロンのバイナリに変換します。

これらのツールは、用途や環境に応じて選択することが重要です。

この記事でわかること
  • Pythonアプリケーションをexe化するためのツールの種類と特徴
  • 各ツールのインストール方法と基本的な使い方
  • 実行ファイルの生成手順とトラブルシューティングのポイント
  • 依存関係の管理方法と実行ファイルのサイズを小さくする方法
  • 複数プラットフォームに対応したアプリケーションの配布方法

目次から探す

PyInstaller以外のexe化ツールまとめ

Pythonで開発したアプリケーションをWindowsの実行ファイル(.exe)に変換するためのツールは、PyInstaller以外にも多く存在します。

これらのツールは、それぞれ異なる特徴や利点を持っており、プロジェクトの要件に応じて選択することが重要です。

PyInstaller以外の代表的なexe化ツールは、cx_Freeze、py2exe、Nuitka、PyOxidizer、Briefcase、py2appです。

各ツールのインストール方法や基本的な使い方、メリット・デメリットを理解することで、最適なツールを選ぶ手助けとなるでしょう。

cx_Freeze

概要

cx_Freezeは、PythonプログラムをWindows、macOS、Linux向けの実行ファイルに変換するためのツールです。

特に、GUIアプリケーションの配布に適しており、Pythonの標準ライブラリやサードパーティ製ライブラリを含むことができます。

シンプルな設定で使いやすく、クロスプラットフォーム対応が特徴です。

インストール方法

cx_Freezeは、Pythonのパッケージ管理ツールであるpipを使用して簡単にインストールできます。

以下のコマンドを実行してください。

pip install cx_Freeze

基本的な使い方

cx_Freezeを使用するためには、まずsetup.pyという設定ファイルを作成します。

以下は、基本的なsetup.pyの例です。

from cx_Freeze import setup, Executable
# アプリケーションの情報
setup(
    name="MyApp",
    version="0.1",
    description="サンプルアプリケーション",
    executables=[Executable("main.py")]
)

この設定ファイルを使って、実行ファイルを生成します。

利用可能なオプション

cx_Freezeでは、以下のようなオプションを設定できます。

スクロールできます
オプション名説明
nameアプリケーションの名前
versionアプリケーションのバージョン
descriptionアプリケーションの説明
executables実行ファイルの設定
packages必要なパッケージのリスト
include_files同梱するファイルのリスト

実行ファイルの生成手順

  1. setup.pyを作成する。
  2. コマンドラインで以下のコマンドを実行する。
python setup.py build
  1. buildフォルダ内に生成された実行ファイルを確認する。

トラブルシューティング

  • 依存関係が見つからない: setup.pyに必要なパッケージをpackagesオプションで指定してください。
  • 実行ファイルが起動しない: エラーメッセージを確認し、必要なファイルが同梱されているか確認します。

メリットとデメリット

スクロールできます
メリットデメリット
クロスプラットフォーム対応設定がやや複雑な場合がある
GUIアプリケーションに適している一部のライブラリに対応していないことがある
シンプルなインストール手順実行ファイルのサイズが大きくなることがある

py2exe

概要

py2exeは、PythonプログラムをWindows用の実行ファイル(.exe)に変換するためのツールです。

特に、Windows環境での配布に特化しており、Pythonのスクリプトを簡単に実行可能な形式に変換できます。

シンプルな設定で、依存関係の管理も行えるため、初心者にも扱いやすいツールです。

インストール方法

py2exeは、pipを使用してインストールできます。

以下のコマンドを実行してください。

pip install py2exe

基本的な使い方

py2exeを使用するためには、setup.pyという設定ファイルを作成します。

以下は、基本的なsetup.pyの例です。

from distutils.core import setup
import py2exe
# アプリケーションの情報
setup(
    console=['main.py'],  # コンソールアプリケーションの場合
    options={
        'py2exe': {
            'bundle_files': 1,  # すべてのファイルを1つのexeにまとめる
            'compressed': True,  # 実行ファイルを圧縮する
        }
    },
    zipfile=None,  # zipファイルを作成しない
)

setup.pyの設定方法

setup.pyでは、以下のようなオプションを設定できます。

スクロールできます
オプション名説明
consoleコンソールアプリケーションの指定
windowsGUIアプリケーションの指定
optionspy2exeのオプション設定
bundle_files実行ファイルのバンドル方法
compressed実行ファイルの圧縮設定
zipfilezipファイルの生成設定

実行ファイルの生成手順

  1. setup.pyを作成する。
  2. コマンドラインで以下のコマンドを実行する。
python setup.py py2exe
  1. distフォルダ内に生成された実行ファイルを確認する。

トラブルシューティング

  • 依存関係が見つからない: setup.pyに必要なパッケージを明示的に指定してください。
  • 実行ファイルが起動しない: エラーメッセージを確認し、必要なDLLファイルが同梱されているか確認します。

メリットとデメリット

スクロールできます
メリットデメリット
Windows専用で動作が軽快クロスプラットフォームには対応していない
シンプルな設定で使いやすいGUIアプリケーションの設定が複雑になることがある
依存関係の管理が容易一部のライブラリに対応していないことがある

Nuitka

概要

Nuitkaは、PythonコードをC言語にコンパイルし、実行可能なバイナリファイルを生成するツールです。

これにより、Pythonプログラムの実行速度を向上させることができ、また、配布用の実行ファイルを作成することも可能です。

Nuitkaは、Pythonの標準ライブラリやサードパーティ製ライブラリをサポートしており、特にパフォーマンスを重視するプロジェクトに適しています。

インストール方法

Nuitkaは、pipを使用してインストールできます。

以下のコマンドを実行してください。

pip install Nuitka

基本的な使い方

Nuitkaを使用するためには、コマンドラインから直接実行します。

以下は、基本的な使い方の例です。

nuitka --standalone --onefile main.py

このコマンドは、main.pyを単一の実行ファイルにコンパイルします。

コンパイルオプション

Nuitkaでは、さまざまなコンパイルオプションを指定できます。

主なオプションは以下の通りです。

スクロールできます
オプション名説明
--standalone依存関係を含むスタンドアロン実行ファイルを生成
--onefile単一の実行ファイルを生成
--enable-plugin特定のプラグインを有効にする
--output-dir出力先ディレクトリを指定
--python-version使用するPythonのバージョンを指定

実行ファイルの生成手順

  1. コマンドラインで以下のコマンドを実行する。
nuitka --standalone --onefile main.py
  1. コンパイルが完了すると、同じディレクトリに実行ファイルが生成されます。

トラブルシューティング

  • 依存関係が見つからない: --standaloneオプションを使用して、すべての依存関係を含めるようにしてください。
  • コンパイルエラーが発生する: エラーメッセージを確認し、必要なライブラリやモジュールが正しくインストールされているか確認します。

メリットとデメリット

スクロールできます
メリットデメリット
実行速度が向上するコンパイルに時間がかかることがある
スタンドアロン実行ファイルが生成可能Windows専用の機能がある
Pythonの標準ライブラリをサポート一部のライブラリに対応していないことがある

PyOxidizer

概要

PyOxidizerは、Pythonアプリケーションをスタンドアロンの実行ファイルに変換するためのツールです。

Rustで実装されており、高速なビルドプロセスと小さな実行ファイルサイズが特徴です。

PyOxidizerは、Pythonのインタプリタやライブラリをバイナリに埋め込むことができ、配布が容易になります。

特に、パフォーマンスやセキュリティを重視するプロジェクトに適しています。

インストール方法

PyOxidizerは、RustのパッケージマネージャであるCargoを使用してインストールします。

以下のコマンドを実行してください。

cargo install pyoxidizer

基本的な使い方

PyOxidizerを使用するためには、まずプロジェクトのルートディレクトリにpyoxidizer.bzlという設定ファイルを作成します。

以下は、基本的な設定ファイルの例です。

# pyoxidizer.bzl
def make_executable():
    return {
        "name": "MyApp",
        "python": "python3",
        "source": "main.py",
    }

コンフィギュレーションファイルの設定

pyoxidizer.bzlでは、以下のような設定を行うことができます。

スクロールできます
設定項目説明
nameアプリケーションの名前
python使用するPythonのバージョン
sourceメインのPythonスクリプトのパス
include_files同梱するファイルのリスト
resourcesアプリケーションで使用するリソース

実行ファイルの生成手順

  1. pyoxidizer.bzlを作成する。
  2. コマンドラインで以下のコマンドを実行する。
pyoxidizer build
  1. ビルドが完了すると、buildフォルダ内に実行ファイルが生成されます。

トラブルシューティング

  • ビルドエラーが発生する: エラーメッセージを確認し、必要な依存関係が正しくインストールされているか確認します。
  • 実行ファイルが起動しない: 必要なリソースファイルが同梱されているか確認してください。

メリットとデメリット

スクロールできます
メリットデメリット
高速なビルドプロセスRustの知識が必要な場合がある
小さな実行ファイルサイズWindows以外のプラットフォームでのサポートが限定的
Pythonのインタプリタを埋め込むことができる設定がやや複雑なことがある

Briefcase

概要

Briefcaseは、Pythonアプリケーションをデスクトップやモバイルプラットフォーム向けのネイティブアプリケーションに変換するためのツールです。

特に、クロスプラットフォーム対応が強みで、Windows、macOS、Linux、iOS、Androidなど、さまざまな環境で動作するアプリケーションを簡単に作成できます。

Briefcaseは、アプリケーションのパッケージングと配布を効率化するための機能を提供します。

インストール方法

Briefcaseは、pipを使用してインストールできます。

以下のコマンドを実行してください。

pip install briefcase

基本的な使い方

Briefcaseを使用するためには、まず新しいプロジェクトを作成します。

以下のコマンドでプロジェクトを作成します。

briefcase new

このコマンドを実行すると、プロジェクトの設定を行うための対話式プロンプトが表示されます。

プロジェクトの設定方法

プロジェクトの設定は、生成されたpyproject.tomlファイルで行います。

以下は、基本的な設定項目の例です。

スクロールできます
設定項目説明
appアプリケーションの名前
versionアプリケーションのバージョン
descriptionアプリケーションの説明
author作者の名前
requires必要なパッケージのリスト

実行ファイルの生成手順

  1. プロジェクトの設定を行った後、以下のコマンドを実行します。
briefcase build
  1. ビルドが完了したら、次に以下のコマンドで実行ファイルを生成します。
briefcase package
  1. 生成された実行ファイルは、distフォルダ内に格納されます。

トラブルシューティング

  • 依存関係が見つからない: pyproject.tomlに必要なパッケージを明示的に指定してください。
  • ビルドエラーが発生する: エラーメッセージを確認し、必要なツールやライブラリがインストールされているか確認します。

メリットとデメリット

スクロールできます
メリットデメリット
クロスプラットフォーム対応設定がやや複雑な場合がある
ネイティブアプリケーションの生成一部のプラットフォームでのサポートが限定的
簡単なプロジェクト作成手順実行ファイルのサイズが大きくなることがある

py2app

概要

py2appは、PythonアプリケーションをmacOS向けのネイティブ実行ファイル(.app)に変換するためのツールです。

特に、macOS環境でのアプリケーション配布に特化しており、Pythonのスクリプトを簡単に実行可能な形式に変換できます。

py2appは、依存関係の管理やリソースの同梱が容易で、macOSユーザーにとって使いやすいアプリケーションを提供します。

インストール方法

py2appは、pipを使用してインストールできます。

以下のコマンドを実行してください。

pip install py2app

基本的な使い方

py2appを使用するためには、setup.pyという設定ファイルを作成します。

以下は、基本的なsetup.pyの例です。

from setuptools import setup
# アプリケーションの情報
setup(
    app=["main.py"],  # メインのPythonスクリプト
    setup_requires=["py2app"],  # py2appを使用することを指定
    options={
        "py2app": {
            "argv_emulation": True,  # コマンドライン引数のエミュレーション
            "packages": ["必要なパッケージ名"],  # 必要なパッケージを指定
        }
    },
)

setup.pyの設定方法

setup.pyでは、以下のようなオプションを設定できます。

スクロールできます
オプション名説明
appアプリケーションのメインスクリプト
setup_requires必要なセットアップツールの指定
optionspy2appのオプション設定
packages同梱する必要なパッケージのリスト
iconfileアプリケーションのアイコンファイルの指定

実行ファイルの生成手順

  1. setup.pyを作成する。
  2. コマンドラインで以下のコマンドを実行する。
python setup.py py2app
  1. ビルドが完了すると、distフォルダ内に生成されたアプリケーションが格納されます。

トラブルシューティング

  • 依存関係が見つからない: setup.pyに必要なパッケージを明示的に指定してください。
  • アプリケーションが起動しない: エラーメッセージを確認し、必要なリソースファイルが同梱されているか確認します。

メリットとデメリット

スクロールできます
メリットデメリット
macOS専用で動作が軽快WindowsやLinuxには対応していない
シンプルな設定で使いやすいGUIアプリケーションの設定が複雑になることがある
依存関係の管理が容易一部のライブラリに対応していないことがある

複数プラットフォーム対応のexe化

使用するツールの選定

複数のプラットフォームに対応した実行ファイルを生成するためには、以下のツールから選定することが重要です。

各ツールの特徴を考慮し、プロジェクトの要件に最適なものを選びましょう。

スクロールできます
ツール名対応プラットフォーム特徴
PyInstallerWindows, macOS, Linuxシンプルな設定で多くのライブラリに対応
cx_FreezeWindows, macOS, LinuxGUIアプリケーションに適している
NuitkaWindows, macOS, LinuxC言語にコンパイルし、実行速度が向上
BriefcaseWindows, macOS, Linux, iOS, Androidクロスプラットフォーム対応が強み
PyOxidizerWindows, macOS, LinuxRustで実装され、高速なビルドが可能

実行ファイルの生成手順

  1. ツールのインストール: 選定したツールをpipなどでインストールします。

例えば、PyInstallerの場合は以下のコマンドを実行します。

pip install pyinstaller
  1. プロジェクトの設定: 各ツールに応じた設定ファイルを作成します。

例えば、PyInstallerの場合は、以下のコマンドで実行ファイルを生成します。

pyinstaller --onefile main.py
  1. ビルドの実行: コマンドラインからビルドを実行し、指定したプラットフォーム用の実行ファイルを生成します。
  2. 生成されたファイルの確認: 各ツールの出力先フォルダに生成された実行ファイルを確認します。

例えば、PyInstallerの場合はdistフォルダ内に生成されます。

トラブルシューティング

  • 依存関係の問題: 実行ファイルが依存するライブラリが見つからない場合、設定ファイルに必要なパッケージを明示的に指定してください。

特に、GUIアプリケーションの場合は、必要なリソースファイルも同梱する必要があります。

  • 実行ファイルが起動しない: エラーメッセージを確認し、必要なDLLファイルやリソースが同梱されているか確認します。

また、プラットフォームごとの特有の問題がないかもチェックしてください。

  • ビルドエラー: ビルド中にエラーが発生した場合、エラーメッセージを元に必要なライブラリやツールが正しくインストールされているか確認します。

特に、Pythonのバージョンや依存関係のバージョンに注意が必要です。

よくある質問

exe化したファイルが動作しない場合の対処法

実行ファイルが動作しない場合、以下の点を確認してください。

  • 依存関係の確認: 必要なライブラリやモジュールが正しく同梱されているか確認します。

特に、GUIアプリケーションの場合はリソースファイルも必要です。

  • エラーメッセージの確認: 実行時に表示されるエラーメッセージを確認し、問題の特定に役立てます。
  • 環境の確認: 実行環境が正しいか、必要なPythonのバージョンがインストールされているか確認します。

依存関係の管理方法

依存関係を管理するためには、以下の方法があります。

  • requirements.txtの作成: プロジェクトに必要なパッケージをリスト化し、requirements.txtファイルを作成します。

これにより、他の開発者が同じ環境を再現しやすくなります。

  • setup.pyの利用: setup.pyファイルに必要なパッケージを指定することで、ビルド時に自動的に依存関係を解決できます。
  • 仮想環境の使用: venvcondaなどの仮想環境を使用して、プロジェクトごとに依存関係を分離します。

実行ファイルのサイズを小さくする方法

実行ファイルのサイズを小さくするためには、以下の方法を試してみてください。

  • 不要なファイルの除外: ビルド時に不要なファイルやライブラリを除外するオプションを使用します。

例えば、PyInstallerでは--exclude-moduleオプションを使用できます。

  • 圧縮オプションの利用: 一部のツールでは、実行ファイルを圧縮するオプションが用意されています。

これを利用することで、ファイルサイズを削減できます。

  • 最適化オプションの使用: NuitkaやPyOxidizerなどのツールでは、最適化オプションを指定することで、生成されるバイナリのサイズを小さくすることが可能です。

まとめ

この記事では、Pythonアプリケーションをexe化するためのさまざまなツールとその使い方について解説しました。

各ツールの特徴や実行ファイルの生成手順、トラブルシューティングの方法を振り返ることで、最適なツールを選ぶための知識を得ることができました。

ぜひ、これらの情報を活用して、あなたのPythonプロジェクトを効果的に配布してみてください。

  • URLをコピーしました!
目次から探す