Differences between revisions 10 and 11
Revision 10 as of 2010-02-28 15:16:54
Size: 2420
Editor: zebul666
Comment: PyQt and Phonon
Revision 11 as of 2010-02-28 15:51:16
Size: 2496
Editor: zebul666
Comment:
Deletions are marked like this. Additions are marked like this.
Line 50: Line 50:
Line 57: Line 56:
'''Tips''': use data_files for this. See below
Line 58: Line 59:
In a similar manner as using PyQt4 and SQlite (from pyqt), one need to add an extra step to use Phonon.
The very first setup.py is needed, with includes for sip. But one have to also copy the
phonon_backend directory from PyQt4 installation to your dist directory
Otherwise you get an error: "phonon backend could not be loaded"
In a similar manner as using PyQt4 and SQlite (from pyqt), one need to add an extra step to use Phonon and copy PyQt4\plugins\phonon_backend directory into your dist directory. Otherwise you get an error: "phonon backend could not be loaded"
Line 62: Line 61:
'''I think this could be generalize to any directory in your PyQt4\plugins directory that you might need, depending on what you use in PyQt.''' But the correct way to do this is to use [[data_files|data_files]] in your setup.py
{{{
data_files = [
            ('phonon_backend', [
                'C:\Python26\Lib\site-packages\PyQt4\plugins\phonon_backend\phonon_ds94.dll'
                ])
]
}}}

Error message

  File "form1.pyc", line 11, in ?
  File "qt.pyc", line 9, in ?
  File "qt.pyc", line 7, in __load
ImportError: No module named sip

Solution

python setup.py py2exe --includes sip

setup.py

   1 from py2exe.build_exe import py2exe
   2 from distutils.core import setup
   3 setup( console=[{"script": "main.py"}] )

Reference

I found this tips here : http://nerdierthanthou.nfshost.com/2005/03/image-resizer.html

There is a full code sample.

Another Solution to the same problem:

from distutils.core import setup
import py2exe
setup(windows=[{"script":"main.py"}], options={"py2exe":{"includes":["sip"]}})

I found that on the web, unfortunately don't know anymore where, but it also works for me!

Obviously is the second part only a way to get the " --includes sip" parameter directly into the script, but the use of "windows" instead of "console" doesn't open a console window, but immediately a Qt window in my case.

Fix for PyQt4

If you get the following error:

ImportError: No module named _qt

The solution is to add PyQt4._qt to the setup function (see bellow). I found the solution for the problem here.

   1 from distutils.core import setup
   2 import py2exe
   3 
   4 setup(windows=[{"script" : "app.pyw"}], options={"py2exe" : {"includes" : ["sip", "PyQt4._qt"]}})

Using PyQt4 with Databases

When deploying applications which use PyQt4 and SQLite:

  • Add "PyQt4.QtSql' to the setup includes.

  • Copy the contents of PyQt4\plugins\sqldrivers to <appdir>\sqldrivers. It did not work for me in any subdirectory including the zipfile directory. For SQLite I only needed to copy qsqlite4.dll.

  • A separate copy of sqlite3.dll is not needed.

Tips: use data_files for this. See below

PyQt4 and Phonon

In a similar manner as using PyQt4 and SQlite (from pyqt), one need to add an extra step to use Phonon and copy PyQt4\plugins\phonon_backend directory into your dist directory. Otherwise you get an error: "phonon backend could not be loaded"

But the correct way to do this is to use data_files in your setup.py

data_files = [
            ('phonon_backend', [
                'C:\Python26\Lib\site-packages\PyQt4\plugins\phonon_backend\phonon_ds94.dll'
                ])
]

Py2exeAndPyQt (last edited 2011-10-16 21:42:58 by MircoAckermann)