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 :option:`--onefile` to :file:`Configure.py`.
Prerequisite is to install :ref:`Python, Setuptools 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 :file:`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 :file:`.exe` into :file:`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, Setuptools and pywin32 dependency on Windows <install-windows>`.