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
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 | no | 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 |
.. todo:: Add other solutions: py2app
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.
Only Pyinstaller makes self-executable exe that bundles the dll when
passing --onefile to Configure.py.
Prerequisite is to install :ref:`Python, Distribute and pywin32 dependency on Windows <install-windows>`.
.. todo:: Write steps for most basic .exe
Prerequisite is to install :ref:`Python on Windows <install-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 into dist 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.
Prerequisite is to have installed :ref:`Python, Distribute and pywin32 dependency on Windows <install-windows>`.