コードのフリーズ

コードを “フリーズ” すると、アプリケーションコードとPythonインタプリタのすべてを含む、エンドユーザーに配布するための単一ファイルの実行可能ファイルが作成されます。

「Dropbox」、「Eve Online」、「Civilization IV」、BitTorrentクライアントなどのアプリケーションがこれを行います。

この方法を配布することの利点は、必要なバージョンのPython(またはいずれか)がインストールされていなくても、アプリケーションが「うまくいく」ことです。 Windowsでは、そして多くのLinuxディストリビューションやOS Xでも、適切なバージョンのPythonはまだインストールされていません。

さらに、エンドユーザソフトウェアは常に実行形式でなければなりません。 .py で終わるファイルは、ソフトウェアエンジニアやシステム管理者のためのものです。

フリーズの欠点の1つは、配布量を約2〜12MB増やすことです。 また、Pythonのセキュリティ上の脆弱性が修正されたときに、アプリケーションの更新版を出荷する責任があります。

フリーズの代替

あなたのコードをパッケージ化する は、ライブラリやツールを他の開発者に配布するためのものです。

Linuxの場合、フリーズする代わりに、 Linuxディストリビューションパッケージを作成するためのパッケージング (DebianやUbuntuでは.debファイル、Red HatやSuSEでは.rpmファイル) )

課題

“コードをフリーズする” スタブを記入

フリーズツールの比較

ソリューションとプラットフォーム/サポートされる機能:

Solution Windows Linux OS X Python 3 License One-file mode Zipfile import Eggs pkg_resources support
bbFreeze yes yes yes no MIT no yes yes yes
py2exe yes no no yes MIT yes yes no no
pyInstaller yes yes yes yes GPL yes no yes no
cx_Freeze yes yes yes yes PSF no yes yes no
py2app no no yes yes MIT no yes yes yes

注釈

Linux上のPythonコードをWindows実行可能ファイルにフリーズすることはPyInstaller で一度しかサポートされず、後で廃止されました

注釈

すべてのソリューションは、py2appを除くターゲットマシンにMS Visual C++ dllをインストールする必要があります。 Pyinstallerだけが --onefile を渡すときにdllをバンドルする自己実行可能なexeを作成します Configure.py

Windows

bbFreeze

前提条件は Python、Setuptoolsとpywin32の依存関係をWindows にインストールすることです。

課題

最も基本的な .exeのステップを書く

py2exe

前提条件は Python on Windows をインストールすることです。

  1. http://sourceforge.net/projects/py2exe/files/py2exe/ をダウンロードしてインストールします。
  1. 書き込み setup.py (設定オプションのリスト):
from distutils.core import setup
import py2exe

setup(
    windows=[{'script': 'foobar.py'}],
)
  1. (オプション) インクルードアイコン
  1. (オプション) 1ファイルモード
  1. 生成する .exe into dist ディレクトリ:
$ python setup.py py2exe
  1. Microsoft Visual CランタイムDLLを提供します。 2つのオプションがあります: ターゲットマシンにDLLをグローバルにインストールする または dllを .exe と一緒に配布する

PyInstaller

前提条件は、 Python、Setuptoolsとpywin32依存関係をWindows にインストールすることです。

OS X

py2app

PyInstaller

PyInstallerを使用して、Mac OS X 10.6(Snow Leopard)以降のUnix実行ファイルやウィンドウアプリケーションをビルドすることができます。

PyInstallerをインストールするには、pipを使用します:

$ pip install pyinstaller

標準のUnix実行ファイルを作成するには、次のようにします script.py:

$ pyinstaller script.py

これは、

  • script.spec ファイル make ファイルに似ています
  • build フォルダ。いくつかのログファイルを保持します。
  • dist フォルダです。メインの実行ファイル script といくつかの依存するPythonライブラリを保持しています。

script.py としてすべて同じフォルダ内にあります。 PyInstallerは script.py で使われているすべてのPythonライブラリを dist フォルダに置きます。したがって、実行ファイルを配布するときには dist フォルダ全体を配布してください。

script.spec ファイルは ビルドをカスタマイズ するために編集することができます。

  • データファイルを実行可能ファイルにバンドルする
  • PyInstallerが自動的に推論できない実行時ライブラリ (.dll または .so ファイル) を含みます
  • Python実行時オプションを実行可能ファイルに追加する

今すぐ script.specpyinstaller で実行することができます (script.py を再度使用するのではなく):

$ pyinstaller script.spec

スタンドアロンのウィンドウズOS Xアプリケーションを作成するには、--windowed オプションを使います

$ pyinstaller --windowed script.spec

これは dist フォルダに script.app を作成します。 PyQtPySide のようなPythonコードでGUIパッケージを使うようにしてください。アプリのグラフィック部分を制御する。

いくつかのオプションがあります script.spec はMac OS Xアプリケーションバンドルに関連しています ここ 。 たとえば、アプリケーションのアイコンを指定するには、 icon=\ path\to\icon.icns オプションを使用します。

Linux

bbFreeze

PyInstaller