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


87

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


私はまだ2.x(正確には2.7.2)で書いていますが、3.xに転送する必要があるかもしれません(モジュールなどに互換性がある場合)。その場合も解決策が必要になります。
ShadowFlame 2012

パッケージングは​​問題の診断を非常に複雑にすることに注意してください。あなた(またはpdb)が実行中のファイルに簡単にアクセスできないだけでなく(py2exe他の人については.py知らない)、ファイルが含まれていないため、スタックトレースにソース行が表示されません。
ivan_pozdeev 2015年

ちょうど興味深い点として、私はpyinstallerを使い始めました
ShadowFlame

回答:


115

ここにいくつかの一般的なものがあります。特に明記されていない限り、以下にリストされているすべてのプロジェクトは、私の最後の編集(2020年1月)の時点で積極的に維持されています。

また、更新の頻度を確認したい場合に備えて、それぞれのWebサイト、リポジトリ、およびPyPiリストへのリンクも含めました。

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


次のプログラムはすべて同じように機能します。Pythonとプログラムをバンドルし、効果的に組み合わせて実行可能ファイルを生成します。

  • PyInstaller:

  • cx_Freeze:

  • py2app:

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

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


もちろん、それが物事を行う唯一の方法ではありません。

  • 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プログラムを実行可能ファイルに変換することが、必ずしもコードを配布する唯一の方法ではありません。利用可能な他のオプションの詳細については、次のリンクを参照してください。


1
.exeを実行する(またはユーザーに自分でインストールするように依頼する)には、バンドル内にMicrosoft C ++再頒布可能パッケージ(別名msvcrxx.dllxxバージョン番号)を含める必要があることに注意してください。PythonはVisualStudioを使用してWindows上に構築されているため、これが必要です。
勇敢な2015年

したがって、Python IDE(pycharmまたはpydev --eclipseプラグイン)のいずれも、IDE自体にコンパイルから単一実行可能機能をまだ組み込んでいないようです。あれは正しいですか?:-)
Nelda.techspiress 2016年

ソースコードを安全に保つことに関心がある場合は、CコードをコンパイルするCythonがおそらく最良の選択です。凍結技術を使用するプログラムは、通常、簡単に逆コンパイルできます。
マルティン・デ・ラ・フエンテ

PyInstallerは、Python3.7をサポートするものとして上記にリストされています。私の経験とpyinstaller.orgの説明によると、これは真実ではありません。「PyInstallerはPython 2.7および3.3—3.6で動作します」と記載されています。
トム

1
@ Tom-もう少し掘り下げたところ、pyinstaller自体はPython 3.7をサポートしているようですが、3.7をサポートする新しいバージョンは正式にリリースされていません。(たとえば、彼らのgithubリポジトリはPython 3.7をサポートしていると述べています+3.7に関連する未解決の問題は残っていないようですが、PyPiのpyinstallerの最新バージョンは2017年12月のものです)。したがって、3.7のサポートが必要な場合は、ソースから直接pyinstallerをビルドしてインストールするか、次のリリースまで待つことができます。(またはもちろん、別のプログラムを使用してください)
Michael0x2a 2018

10

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をサポートします


2

pip install auto-py-to-exe実行可能ファイルを作成するために必要なすべてのオプションを備えた美しいUIを提供するより良い使用法。

インストール後auto-py-to-exe、ターミナルまたはコマンドプロンプトに入力するだけです。

Auto-py-to-exe


これと同じくらい古いスレッドでまだ返信してくれてありがとう。ルックスは素晴らしい発見すること、そして実際に設定し取得する際の作業を簡素化するだけでなく、実際に使用するコマンドを提供します:D
ShadowFlame
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.