Eli Bendersky
Eli Bendersky

Reputation: 273416

Bundling PyQwt with py2exe

I have a standard setup script for py2exe with which I bundle PyQt-based applications into Windows .exe files.

Today I tried a simple script that uses the PyQwt module, and it doesn't seem to work. py2exe runs alright, but when I execute the .exe it creates, it dumps the following into a log file and doesn't run:

Traceback (most recent call last):
  File "qwt_test.pyw", line 5, in <module>
  File "zipextimporter.pyo", line 82, in load_module
  File "PyQt4\Qwt5\__init__.pyo", line 32, in <module>
  File "zipextimporter.pyo", line 98, in load_module
ImportError: MemoryLoadLibrary failed loading PyQt4\Qwt5\Qwt.pyd

When I look in PyQt4\Qwt5\ in the build\bdist.win32\winexe\collect-2.5 directory, Qwt.pyd is definitely there.

I can't seem to find anything useful online regarding this error. What could cause it? Thanks.

Upvotes: 2

Views: 1514

Answers (2)

ChristopheD
ChristopheD

Reputation: 116137

Some options:

  1. Try playing with the py2xe bundle_files options (3, 2, 1) (especially if you put them all in one big library zip, some dlls don't like that).
  2. Make sure a copy of msvcp71.dll exists under windows\system32 or in the directory of your executable.
  3. Try excluding the dll explicitely (add Qwt.pyd to the dll_excludes option and (after building) copy Qwt.pyd (and _Qwt.pyd if it exists) to your executable path.

Upvotes: 1

Alex Martelli
Alex Martelli

Reputation: 881595

py2exe is not the only way, and maybe not the best way, to put together exe files for Python apps -- in particular, it hardly if at all supports pyqt. Please, I beseech you, check out PyInstaller, which DOES know about PyQt (and Linux, and Mac, should you care...) -- just make sure you use the SVN head checkout, not the "released" version, which at this time is seriously out of date (an issue that's hopefully going away soon...).

Upvotes: 4

Related Questions