web-dev-qa-db-ja.com

Pythonプロジェクトから単一の実行可能ファイルを作成する

Pythonプロジェクトから単一の実行可能ファイルを作成したい。ユーザーはPythonインストールしなくても、それをダウンロードして実行できるはずです。パッケージの場合、pip、wheel、およびPyPIを使用してビルドおよび配布できますが、これにはユーザーがPythonを持ち、パッケージをインストールする方法を知っている必要があります。 -Pythonプロジェクトからの実行可能ファイル?

69
ShadowFlame

一般的なものを次に示します。特に明記されていない限り、以下にリストされているすべてのプロジェクトは、私の最後の編集(2018年8月)の時点でアクティブに維持されています。

また、更新頻度を確認するために、それぞれのWebサイト、リポジトリ、PyPiリストへのリンクも含めました。

また、特に断りのない限り、以下のすべてのプログラムは、実行しているオペレーティングシステム専用のexeを生成します。たとえば、WindowsでPyinstallerを実行するとWindows exeが生成されますが、LinuxでPyinstallerを実行するとLinux exeが生成されます。複数のオペレーティングシステム用のexeを作成する場合は、仮想マシンの使用を検討するか、 Wine などの使用を検討する必要があります。


以下のプログラムはすべて同じように動作します-Pythonとあなたのプログラムを一緒にバンドルし、それらを効果的に組み合わせて実行可能ファイルを生成します。

  • PyInstaller:

  • cx_Freeze:

  • pyapp:

    • リンク:ウェブサイト || レポ || PyPi
    • サポート:Python 2.7および3.3(?)-3.7(?)Macのみ。
    • 注:前回の編集の時点で、Pythonサポートされているバージョンの正確な範囲を最終的に決定することができませんでした最新リリースでは、Python 3.7。

注:この投稿の以前のバージョンには、 py2exerepo )および- bbfreezerepo )。両方のプロジェクトはこのリストから削除されました。数年にわたってほとんどまたはまったく活動が見られず、完全にメンテナンスされていないようです。古い記事の編集履歴をご覧ください。


もちろん、それが唯一の方法ではありません:

  • pynsist:

    • リンク:ウェブサイト || レポ || PyPi
    • サポート:すべてPythonバージョン?注-Windowsインストーラーを作成しますのみ。
    • その他のメモ:Pynsistは、任意のPythonバージョンをアプリケーションと一緒にバンドルすることをサポートしているようです。ただし、ツール自体はPython 3.5+を実行します。

      Pynsistは、プログラムにWindowsインストーラーを作成します。このインストーラーは、コードをバンドルする代わりに、ユーザーのコンピューターにPythonを直接インストールし、Python = script。このプログラムはWindowsインストーラーのみを生成しますが、MacおよびLinuxコンピューターでは still Pynsistを実行 できるようです。

  • Nuitka:

    • リンク:ウェブサイト || レポ(Githubミラー) || PyPi
    • サポート:Python 2.6-2.7およびPython 3.3-3.7、 Mac、およびLinux。
    • その他の注意事項:Nuitkaは文字通りPythonコードをコンパイルし、exeを生成します(他のプロジェクトとは対照的に、単にPythonをインクルードして)コードの試行と高速化を行います。副作用として、配布可能な便利なexeも取得できます。システムで C++コンパイラ を使用できる必要があることに注意してください。
  • シトン:

    • リンク:ウェブサイト || レポ || PyPi
    • サポート:Python 2.6-2.7 and Python 3.2-3.7(?) Windows、Mac、およびLinux。
    • その他の注意:CythonはPythonコンパイラーであるという点でNuitkaに似ています。ただし、直接コンパイルする代わりにその後、そのCコードを取得して コードをexeに変換 することができます。システムでCコンパイラを使用できるようにする必要があります。

私の個人的な好みは、PyInstallerを使用することです。これは、起動して実行するのが最も簡単であり、numpyやpygameなどのさまざまな人気のあるライブラリでうまく動作するように設計されており、さまざまなOSおよびPythonバージョン。

ただし、cx_Freezeを使用してさまざまなexeファイルを難なく作成できたので、そのプログラムも検討する必要があります。

私はまだパイニスト、Nuitka、またはCythonを広範囲に試す機会がありませんでしたが、それらは非常に興味深い革新的なソリューションのようです。プログラムの最初のグループを使用して問題が発生した場合は、これらの3つのいずれかを試してみる価値があります。 Pyinstaller/cx_freezeスタイルのプログラムとは根本的に異なる動作をするため、最初のグループが失敗するという奇妙なEdgeのケースで成功する可能性があります。

特に、pynistはコードを完全に配布するという問題全体を回避する良い方法だと思います。MacとLinuxは既にPythonをネイティブにサポートしており、WindowsにPython最もクリーンなソリューション(欠点は、Python +ライブラリのインストール)の複数のバージョンを対象とすることを心配する必要があることです。

NuitkaとCython(私の限られた経験では)はかなりうまくいくようです。繰り返しますが、私はそれらを自分で広範囲にテストしていません。したがって、私の主な観察は、「フリーズ」スタイルのプログラムが実行するよりもはるかに長い時間がexeを生成するように見えることです。

最後の注意点として、Linuxのみをサポートしたい場合は、パッケージを実行可能にするのではなく、パッケージのディストリビューションパッケージを作成することを検討してください。これを行うのに役立つツールをリストすることはこの投稿の範囲外ですが、このルートを探索することにした場合の 読み物 がここにあります。

93
Michael0x2a

pyinstaller はまだ活発に開発中です。 GitHubで 最新の変更 を確認できます。

3つの主要なプラットフォームすべてをサポートしています。

  • Windows(32ビットおよび64ビット)
  • Linux(32ビットおよび64ビット)
  • Mac OS X(32ビットおよび64ビット)

Pythonバージョン2.6および2.7をサポートしています。 Python 3はサポートしていませんが、実験的な Python 3ブランチ があります。

更新

バージョン3.2.1以降、Python 2.7、3.3-3.5をサポートします

10
jterrace