Could someone tell me which is better of the two for bundling Python applications — cx_Freeze or PyInstaller? I’m looking for a comparison based on factors such as:

  1. Popularity (i.e. larger user base)
  2. Footprint of the built binary
  3. Cross platform compatibility
  4. Ease of use

I tried both for a current project and decided to use cx_freeze. I found it easier to get started. It has an option to bundle dependencies in a zip archive, which makes it easy to check that everything was properly included.

I had trouble getting PyInstaller to include certain egg dependencies. It couldn’t handle conditional imports as well as I needed and looking through the bundled archive was difficult. On Windows, it requires pywin32 (so it can’t be used with virtualenv) and version 1.4 doesn’t work with Python 2.6. There’s no information on whether Python 2.7 is supported.

Why not use something like GUI2EXE?

GUI2Exe is a Graphical User Interface
frontend to all the “executable
builders” available for the Python
programming language. It can be used
to build standalone Windows
executables, Linux applications and
Mac OS application bundles and plugins
starting from Python scripts.

For my experience, I found that for some programs py2exe doesn’t work right, but cx_freeze does. haven’t tried pyinstaller.