On 5 Jan 2010, at 20:48, Ken MacDonald wrote:
Hi, we're trying to using pyinstaller to create single-directory distributions of our Twisted/python server on Linux. Wondering if anyone has accomplished this? I googled and checked the archives, but there seems to be no concrete information available.
Sorry to be negative, but I've not managed to get pyinstaller working with twisted. The reason I'm posting is that I have managed to get bbfreeze and cx_freeze working. This is all about 6 months old, so newer versions might be different, but to summarise: cx_Freeze put everything into an executable zip file so you are left with one main binary and a handful of .so objects for python C modules (unless you patch the Python build to build static). I had to switch to bbfreeze because I needed to use Nevow and there were too many hoops to jump through to make it work with the data files accessed relative to __file__. bbfreeze works with eggs, so it works with Nevow or anything else that uses data files, but the down side is that the result isn't zipped up into one executable. I'm about to reopen the whole freezing thing for a new project, so I may be able to report back in a few weeks.
I'm real new to pyinstaller and not really familiar with twisted internals, so not sure where to start with this, particularly whether to package our_server.tac, or the twistd script, or the our_server.py as the starting point to bundle all of this stuff together. If anyone's done this successfully, or failed miserably, would be interested in getting details.
I dropped the tac file to make it easier to specify the entrypoint. To do this while still getting all the twistd goodness requires some hacking, but it isn't really necessary. You can use the tac file (better to change the extension to .py though) and put a few imports in the file that are only there to pull in dependencies that the freezing program can't find. It's basically an iterative thing - build it, note the missing dependencies, import them, repeat. Good luck.