ここにいくつかの一般的なものがあります。特に明記されていない限り、以下にリストされているすべてのプロジェクトは、私の最後の編集(2020年1月)の時点で積極的に維持されています。
また、更新の頻度を確認したい場合に備えて、それぞれのWebサイト、リポジトリ、およびPyPiリストへのリンクも含めました。
また、特に明記されていない限り、以下にリストされているすべてのプログラムは、実行中のオペレーティングシステム専用のexeを生成します。たとえば、WindowsでPyinstallerを実行するとWindows exeが生成されますが、LinuxでPyinstallerを実行するとLinuxexeが生成されます。複数のオペレーティングシステム用のexeを作成する場合は、仮想マシンの使用を検討するか、Wineなどの使用を検討する必要があります。
次のプログラムはすべて同じように機能します。Pythonとプログラムをバンドルし、効果的に組み合わせて実行可能ファイルを生成します。
PyInstaller:
- リンク:ウェブサイト|| レポ|| PyPi
- サポート:Windows、Mac、およびLinuxではPython2.7およびPython3.4-3.7。
cx_Freeze:
- リンク: ウェブサイト|| レポ|| PyPi
- サポート: Windows、Mac、およびLinuxではPython2.7および3.5-3.8。
py2app:
- リンク: ウェブサイト|| レポ|| PyPi
- サポート: MacでのみPython 2.7および3.3(?)-3.7(?)。
- 注:前回の編集の時点では、pyappでサポートされているPythonバージョンの正確な範囲を決定的に決定することはできませんでした。最新のリリースでは、Python3.7のサポートについて言及しています。
注:この投稿の以前のバージョンには、py2exe(repo)とbbfreeze(repo)の記述が含まれていました。両方のプロジェクトはこのリストから削除されました。数年間ほとんどまたはまったく活動が見られず、完全に維持されていないようです。古い記事の編集履歴を参照してください。
もちろん、それが物事を行う唯一の方法ではありません。
pynsist:
- リンク: ウェブサイト|| レポ|| PyPi
- サポート:すべてのPythonバージョン?注-Windowsインストーラーのみを作成します。
その他の注意事項:
Pynsistは、任意のPythonバージョンをアプリケーションにバンドルすることをサポートしているようです。ただし、ツール自体を実行するにはPython3.5以降が必要です。
Pynsistは、プログラムのWindowsインストーラーを作成します。このインストーラーは、Pythonをコードにバンドルするのではなく、ユーザーのコンピューターに直接インストールし、Pythonスクリプトにリンクするショートカットを作成します。このプログラムはWindowsインストーラーのみを生成しますが、MacおよびLinuxコンピューターでPynsistを実行できるようです。
Nuitka:
- リンク: ウェブサイト|| レポ(Githubミラー) || PyPi
- サポート: Windows、Mac、およびLinuxではPython2.6-2.7およびPython3.3-3.7。
- その他の注意事項: Nuitkaは文字通りPythonコードをコンパイルし、コードを高速化するためにexeを生成します(Pythonを含む他のプロジェクトとは対照的です)。副作用として、配布できる便利なexeファイルも入手できます。システムでC ++コンパイラを使用できるようにする必要があることに注意してください。
cython:
- リンク: ウェブサイト|| レポ|| PyPi
- サポート: Windows、Mac、およびLinuxではPython2.6-2.7およびPython3.2-3.8。
- その他の注意事項: Cythonは、Pythonコンパイラであるという点でNuitkaに似ています。ただし、コードを直接コンパイルする代わりに、Cにコンパイルします。次に、そのCコードを取得して、コードをexeに変換できます。システムでCコンパイラを使用できるようにする必要があります。
私の個人的な好みは、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プログラムを実行可能ファイルに変換することが、必ずしもコードを配布する唯一の方法ではありません。利用可能な他のオプションの詳細については、次のリンクを参照してください。