Building executables for Python 3 and PyQt

WrongAboutMostThings picture WrongAboutMostThings · Nov 15, 2009 · Viewed 7.1k times · Source

I built a rather simple application in Python 3.1 using PyQt4. Being done, I want the application to be distributed to computers without either of those installed.

I almost exclusively care about Windows platforms, so my goal is to have a single executable file and maybe some resource files and .dlls in the end.

Having searched around, I came to the conclusion that

  • py2exe only supports Python up to version 2.7
  • pyinstaller only supports Python up to version 2.6
  • cx_Freeze does not work for me because I keep on getting the following error when trying to execute my successfully build binary:

Y:\Users\lulz\build\exe.win32-3.1>system_shutdown.exe
Traceback (most recent call last):
File "Y:\Program Files (x86)\Python\lib\site-packages\cx_Freeze\initscripts\Console3.py", line 27, in exec(code, m.__dict__)
File "Y:/Users/lulz/Documents/Coding/Python3/projects/System Shutdown/system_shutdown.pyw", line 5, in from PyQt4 import QtCore
File "ExtensionLoader_PyQt4_QtCore.py", line 16, in AttributeError: 'NoneType' object has no attribute 'modules'

So my problem is basically two problems here:

  1. Is there another way but cx_Freeze to build binaries with my configuration?
  2. If not, what might the cx_Freeze problem be?

I can provide more information on the second problem if necessary, like my call of cx_Freeze, my distutils setup script etc.

Thank you already for your help and comments.

Answer

Almar picture Almar · Nov 19, 2009

You can fix this by appending one line of code to freeze.py in your cx_Freeze package.

It is described here: http://www.mail-archive.com/[email protected]/msg00212.html

It worked for me at least :)

Cheers, Almar