Freezing Your Code¶
An alternative to shipping your code is freezing it — shipping it as an executable with a bundled Python interpreter.
Many applications you use every day do this:
- Dropbox
- BitTorrent
- ...
Todo
Fill in “Freezing Your Code” stub
Comparison¶
Solutions and platforms/features supported:
| 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 | no | 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 |
Note
Freezing Python code on Linux into a Windows executable was only once supported in PyInstaller and later dropped..
Note
All solutions need MS Visual C++ dll to be installed on target machine, except py2app.
Only Pyinstaller makes self-executable exe that bundles the dll when
passing --onefile to Configure.py.
Windows¶
bbFreeze¶
Prerequisite is to install Python, Setuptools and pywin32 dependency on Windows.
Todo
Write steps for most basic .exe
py2exe¶
Prerequisite is to install Python on Windows.
- Download and install http://sourceforge.net/projects/py2exe/files/py2exe/
- Write
setup.py(List of configuration options):
from distutils.core import setup
import py2exe
setup(
windows=[{'script': 'foobar.py'}],
)
- (Optionally) include icon
- (Optionally) one-file mode
- Generate
.exeintodistdirectory:
$ python setup.py py2exe
- Provide the Microsoft Visual C runtime DLL. Two options: globally install dll on target machine or distribute dll alongside with .exe.
PyInstaller¶
Prerequisite is to have installed Python, Setuptools and pywin32 dependency on Windows.