Freezing你的代码

‘冻结’(Freeze) 你的代码是指分发给最终用户一个打包了Python解释器的可执行版本。

像 ‘Dropbox’, BitTorrent 客户端, ‘Eve Online’ 以及 ‘文明4’ 都是这样的。

进行这种分发的一个好处是你的用户不需要之前安装过所要求版本的Python。在Windows上, 甚至一些Linus分发版与OSX版本,正确的Python版本并不总是安装过的。

这样的一个劣势是你的分发版将增大大约2MB。另一个问题在于你的应用并不能接收对于该版本 Python的任何安全更新除非你冻结一个新的版本并让你的用户下载它。

Freezing的多种方式

打包你的代码 是指把你的库或工具分发给其他开发者。

在Linux 一个冻结的待选物是 创建一个Linux分发 包 <packaging-for-linux-distributions-ref> (e.g.对于Debian或Ubuntu是 .deb文件, 而对于Red Hat 与SuSE是.rpm文件)

待处理

完善 “冻结你的代码” 部分(stub)。

比较

各解决方案的平台/特性支持性

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到Windows的冻结只有PyInstaller支持, 其余的

注解

所有解决方案需要目前机器上安装了MS Visual C++ dll。除了py2app以外。 只有Pyinstaller创建了可以自足运行的exe文件,其绑定了dll,可以传递 --onefile to Configure.py

Windows

bbFreeze

前置要求是安装 Python, Setuptools 以及 pywin32 的依赖项

待处理

补充更多简单的生成 .exe的步骤。

py2exe

前置要求是安装了 Python on Windows

  1. 下载并且安装 http://sourceforge.net/projects/py2exe/files/py2exe/
  2. 编写 setup.py (配置选项清单):
from distutils.core import setup
import py2exe

setup(
    windows=[{'script': 'foobar.py'}],
)
  1. (可选) 包含图标
  2. (可选) 单文件模式
  3. 生成 :file: .exedist 目录:
$ python setup.py py2exe

6.提供Microsoft Visual C 运行时DLL。两个选项: 在目标机器全局安装dll 或者 与.exe一起分发dll

OS X

py2app

PyInstaller

Linux

bbFreeze

PyInstaller