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
.exe
intodist
directory:
$ 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.