Updated based on user experience.
Recently a user mentioned having trouble freezing an Amara app. This question comes up every six months or so, it seems, so I decided to make sure I have a recipe for easy reference. I also wanted to make sure that successful freezing would not require any changes in 4Suite before the next release. I started with the most recent success report I could find, by Roman Yakovenko. Actually, his recipe ran perfectly well as is. All I'm doing here is expanding on it.
Recipe: freezing 4Suite or Amara apps
Grab cxFreeze. I used the 3.0.1 release, which I built from source on Fedora Core 4 Linux and Python 2.4.1). Updated: I've updated freezehack.py to work with cxFreeze 3.0.2, thanks to Luis Miguel Morillas.
Grab freezehack.py, which was originally put together by Roman. Add it to your
import freezehack to your main Python module for the
executable to be created. update actually, based on Mike Powers' experience you might have to add this import to every module that imports
Freeze your program as usual. Run FreezePython.exe (or FreezePython on UNIX).
See the following sample session:
$ cat main.py import freezehack import amara diggfeed = amara.parse("http://www.digg.com/rss/index.xml") print diggfeed.rss.channel.item.title $ FreezePython --install-dir dist --target-name testexe main.py [SNIP] Frozen binary dist/testexe created. $ ./dist/testexe Guess-the-Google - Simple but addictive game
In order to share the executable you have to copy the whole
directory to the target machine, but that's all you should need to do.
Python, 4Suite, Amara and any other such dependencies are bundled
Now back to the release.