Distributing closed source Python applications
Last November we switched to Python as the principal language for all new software development projects at work, ditching Microsoft Visual C++ and PHP in the process
Last Friday we released our first Python application to our customers for both Windows and Linux users.
Although we make good use of Open Source software development tools and methodologies the application we have just written is propritary and the source can not be released publically, therefore we needed to compile, or freeze, the Python script in order to create a stand alone executable. Tools that do this have been around for sometime, however our application makes use of Win32 Extensions for Python and WMI on Windows, DBUS/HAL on Linux, wxPython on both, and a number of other modules. This is quite a big ask for the Python script compilers and initially the only tool which could build this lot successfully was py2exe. Sadly that only solves part of the problem since it is a Windows only tool
Then we found bbfreeze, which supports both Windows and Linux with Mac OS X support being actively developed. bbfreeze has a simple build API and we were soon using it to build stand alone exectuables for both Windows and Linux. Everything is peachy, all we needed was as means to install our application.
Enter InstallJammer. InstallJammer is a multiplatform GUI installer designed to be completely cross-platform and functions on Windows, most versions of UNIX with support for MacOS X coming soon. Perfect! We have now packaged our application using InstallJammer to create simple Next, Next, Finish installers which look and function the same on both Windows and Linux.
In the fullness of time we are planning to release our application on Mac OS X too, by that time we anticiapte that bbfreeze and InstallJammer will be upto speed with support for that platform. Just thought I’d share our experiences and I’d be interested to hear from anyone who has had to do the something similiar and what tools they used?
In: Programming · Tagged with: binary, compile, Linux, Mac OS X, Python, Windows





on September 1, 2009 at 1:25 pm
· Permalink
Thanks for the tips. I am about to be brought on to a dev team to do the Linux port of the desktop client and they want to do it in python but make it closed source.
Also I found Pyinsaller, did that not work for you?