私のアプリケーションは次のようになります。
main.py windows / __init __。py mainwindow.py ... model / __init __。py orders.py ... resources / image1.png logo.jpg .. 。
プログラムはmain.pyで開始されます。 「最終」アプリケーションを作成する良い方法はありますか?私はpy2exe/py2appのようなものを考えていますが、pythonインタープリター/モジュールを実行可能ファイルが1つしかないアプリケーションにコピーせずに。
私はdistutilsを見ましたが、これはプログラムをPythonディレクトリにインストールするように見えます。これはLinux以外のプラットフォームでは普通ではありません。
現時点では、ソースフォルダー全体をターゲットマシンにコピーし、main.pyw
Windowsの場合。いくつかの不便:
main.py
からmain.pyw
手動で。どうすれば素敵な自動配信を作成できますか?
Pythonアプリケーションを配布する通常の方法は、 distutils を使用することです。これは、ライブラリタイプpythonモジュール、およびpythonアプリケーションですが、Windowsでの動作はわかりません。Windowsでは、distutilsを使用する場合は、個別にPythonを別途インストールする必要があります。
Linuxではdisutilsで、WindowsではPy2exeまたは同様のもので配布することをお勧めします。 OS Xについては知りません。もしそれがあなたがおそらくディスクイメージタイプのものを望むであろうエンドユーザーアプリケーションであるなら、私はそれをする方法を知りません。ただし、ユーザーエクスペリエンスの詳細については、 この投稿 を参照してください。プログラマー向けに作成されたアプリケーションの場合、OS Xにdistutilsタイプのインストールを使用しても大丈夫でしょう。
Pyinstaller を強くお勧めします。これは、すべての主要なプラットフォームをかなりシームレスにサポートします。 py2exeやpy2appのように、Windowsでは標準の実行可能ファイル、OS Xではアプリバンドルを生成しますが、一般的な依存関係を自動解決し、追加の構成調整なしでそれらを含めるという素晴らしい仕事をするという利点もあります。
また、Python 2.6をWindowsにデプロイする場合は、Pyinstallerトランクに このパッチ を適用する必要があります。
インストーラーは必要ないことを示しましたが、 Inno Setup はWindowsプラットフォーム用の使いやすくセットアップが簡単な選択肢です。
Fredrik Lundh's squeeze.py
は、Pythonインタープリターを含まず、代わりにバイトコードを含む単一のファイルを作成できます。正しい引数を使用すると、結果に他のファイル、モジュールなどを含めることができます。 1つのプロジェクトで正常に使用した結果、プログラムはOS X、Linux、Windowsで問題なく実行されました。
[〜#〜] ps [〜#〜]:各マシンには、互換性のあるPythonインタープリターが必要です必要に応じて、Pythonの異なるバージョンに対して異なるバイトコードバージョンを生成できます(適切なバージョンのPythonでsqueeze.pyを実行するだけです)。
間違っているかもしれませんが、IronPythonにはWindows用のコンパイラが組み込まれていませんか?
[編集]
Cx_Freezeを試してください。これまでで最高の.pyから.exe(およびいくつかの.dll)コンパイラまで使用しました。
[〜#〜] pex [〜#〜] (この質問が受けた注意をより多く考慮し、質問自体を考慮しない)に言及する価値もあると思います。その own description によると:
PEXファイルは自己完結型の実行可能ファイルPython仮想環境です。具体的には、
#!/usr/bin/env python
および特別な__main__.py
これにより、PEXランタイムと対話できます。 Zipアプリケーションの詳細については、 PEP 441 を参照してください。
pythonのパッケージ化の概要 を読んだときに、つまずいた。彼らはこの素敵な写真をそこに投稿しました:
要約すると:pythonターゲットマシンにインストールされていることに依存する余裕がある場合は、PEXを使用して自己完結型の"executable"を生成します。 、 例えば。
Windowsで配布している場合は、 installer を使用して、必要なすべての関連ファイル/ interpeterをインストールします。 setup.exeを配布します。これがWindowsでの最良の方法です。そうしないと、ユーザーは苦情を言います。
pythonデスクトップアプリケーションを配布する最も便利な*クロスプラットフォームの方法は、クロスプラットフォームcondaパッケージマネージャーに依存することです。それを使用するいくつかのツールがあります。
*開発者にとって最も便利。エンドユーザーにとって十分に便利です。