コードのフリーズ¶
コードを “フリーズ” すると、アプリケーションコードと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¶
py2exe¶
前提条件は Python on Windows をインストールすることです。
- http://sourceforge.net/projects/py2exe/files/py2exe/ をダウンロードしてインストールします。
- 書き込み
setup.py(設定オプションのリスト):
from distutils.core import setup
import py2exe
setup(
windows=[{'script': 'foobar.py'}],
)
- (オプション) インクルードアイコン
- (オプション) 1ファイルモード
- 生成する
.exeintodistディレクトリ:
$ python setup.py py2exe
- Microsoft Visual CランタイムDLLを提供します。 2つのオプションがあります: ターゲットマシンにDLLをグローバルにインストールする または dllを .exe と一緒に配布する 。
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.spec は pyinstaller で実行することができます (script.py を再度使用するのではなく):
$ pyinstaller script.spec
スタンドアロンのウィンドウズOS Xアプリケーションを作成するには、--windowed オプションを使います
$ pyinstaller --windowed script.spec
これは dist フォルダに script.app を作成します。 PyQt や PySide のようなPythonコードでGUIパッケージを使うようにしてください。アプリのグラフィック部分を制御する。
いくつかのオプションがあります script.spec はMac OS Xアプリケーションバンドルに関連しています ここ 。 たとえば、アプリケーションのアイコンを指定するには、 icon=\ path\to\icon.icns オプションを使用します。