Pythonプロジェクトから単一の実行可能ファイルを作成したいと思います。ユーザーは、Pythonをインストールしなくても、ダウンロードして実行できる必要があります。パッケージを配布するだけの場合は、pip、wheel、およびPyPIを使用してパッケージをビルドおよび配布できますが、これには、ユーザーがPythonを使用し、パッケージのインストール方法を知っている必要があります。Pythonプロジェクトから自己完結型の実行可能ファイルをビルドするために何を使用できますか?
3 に答える
ここにいくつかの一般的なものがあります。前回の編集(2021年7月)の時点で積極的に保守されているプロジェクトのみを含めました。
特に明記されていない限り、以下にリストされているすべてのプログラムは、実行中のオペレーティングシステム専用のexeを生成します。たとえば、WindowsでPyinstallerを実行するとWindows exeが生成されますが、LinuxでPyinstallerを実行するとLinuxexeが生成されます。複数のオペレーティングシステム用のexeを作成する場合は、仮想マシンなどのWineの使用を検討する必要があります。
次のプログラムはすべて同じように機能します。Pythonとプログラムをバンドルし、それらを効果的に組み合わせて実行可能ファイルを生成します。
PyInstaller:
Windows、Mac、およびLinuxでPython3.5-3.9をサポートします。
cx_Freeze:
Windows、Mac、およびLinuxでPython3.6-3.9をサポートします。
py2exe:
WindowsでのみPython3.6-3.9をサポートします。
py2app:
MacでのみPython2.7(?)およびPython 3(?)をサポートします。サポートされているPythonバージョンの正確な範囲は、現在文書化されていません。
もちろん、それが物事を行う唯一の方法ではありません。
pynsist:
Pynsistは、プログラムにWindowsインストーラーを作成します。このインストーラーは、Pythonをコードにバンドルするのではなく、ユーザーのコンピューターに直接インストールし、Pythonスクリプトにリンクするショートカットを作成します。
pynsistツール自体を実行するにはPython3.5以降が必要ですが、Pythonの任意のバージョンをプログラムにバンドルすることをサポートしています。
PynsistはWindowsインストーラーのみを作成しますが、Windows、Mac、およびLinuxから実行できます。詳細については、FAQを参照してください。
Nuitka:
ウェブサイト|| レポ(Githubミラー) || PyPi
Nuitkaは、文字通りPythonコードをコンパイルし、exeを生成して(Pythonを含む他のプロジェクトとは対照的に)、コードを高速化しようとします。副作用として、配布できる便利なexeファイルも入手できます。システムでC++コンパイラを使用できるようにする必要があることに注意してください。
Windows、Mac、およびLinuxでPython2.6-2.7およびPython3.3-3.9をサポートします。
cython:
Cythonは、Pythonコンパイラであるという点でNuitkaに似ています。ただし、コードを直接コンパイルする代わりに、Cにコンパイルします。次に、そのCコードを取得して、コードをexeに変換できます。システムでCコンパイラを使用できるようにする必要があります。
Windows、Mac、およびLinuxでPython2.6-2.7およびPython3.3-3.9をサポートします。
私の個人的な好みは、PyInstallerを使用することです。これは、起動して実行するのが最も簡単で、numpyやpygameなどのさまざまな人気のあるライブラリとうまく連携するように設計されており、さまざまなOSやPythonバージョンとの互換性が高いためです。
ただし、cx_Freezeを使用してさまざまなexeを問題なく構築できたので、そのプログラムを試すことも検討する必要があります。
私はまだpynist、Nuitka、またはCythonを広範囲に試す機会がありませんでしたが、それらは非常に興味深く革新的なソリューションのようです。プログラムの最初のグループを使用して問題が発生した場合は、これら3つのいずれかを試してみる価値があるかもしれません。これらはPyinstaller/cx_freezeスタイルのプログラムとは根本的に異なる動作をするため、最初のグループが失敗する奇妙なエッジの場合に成功する可能性があります。
特に、pynistは、コードを配布するという問題全体を回避するための良い方法だと思います。MacとLinuxはすでにPythonをネイティブにサポートしており、WindowsにPythonをインストールするだけで本当にクリーンなソリューションになる可能性があります。(欠点は、Pythonの複数のバージョンをターゲットにしてライブラリをインストールすることを心配する必要があることです)。
NuitkaとCython(私の限られた経験では)はかなりうまく機能しているようです。繰り返しになりますが、私はそれらを自分で広範囲にテストしていません。したがって、私の主な観察は、「フリーズ」スタイルのプログラムよりもexeの生成にはるかに長い時間がかかるように見えることです。
そうは言っても、Pythonプログラムを実行可能ファイルに変換することが、必ずしもコードを配布する唯一の方法ではありません。利用可能な他のオプションの詳細については、次のリンクを参照してください。
pyinstallerはまだ活発に開発中です。GitHubで最新の変更を確認できます。
3つの主要なプラットフォームすべてをサポートしています。
- Windows(32ビットおよび64ビット)
- Linux(32ビットおよび64ビット)
- Mac OS X(32ビットおよび64ビット)
Pythonバージョン2.6および2.7をサポートします。Python 3はサポートしていませんが、実験的なPython3ブランチがあります。
アップデート
バージョン3.2.1以降、Python 2.7、3.3-3.5をサポートします