Hello all,

I am trying to package an extension module that works with qt objects. I therefore wrapped the code using sip and everything seems to work fine when i build in the documented using a .sip file and configuration.py.

Now I am trying to package everything for distribution using sipdistutils. This worked fine for non-qt containing code. In this case, however, the .sip file contains the line %Import qt/qtmod.sip, and the build process stops with the error that this file cannot be found. This makes sense since sip runs without the -I flag.

I have now worked around the problem in a quick and dirty way by copying sipdistutils.py to pyqtdistutils.py and changing the code in _sip_compile to the following

  def _sip_compile(self, sip_bin, source, sbf) :
    import pyqtconfig
    pqconfig = pyqtconfig.Configuration()
    os.system(" ".join([sip_bin,
                "-c", self.build_temp,
                "-b", sbf,
                "-I", pqconfig.pyqt_sip_dir,
                pqconfig.pyqt_qt_sip_flags,
                source]))

This works fine. HOwever, I had te change the self.spawn call to os.system, because the first would stop on the error:

sip: /usr/share/sip/qt/versions.sip:30: Exactly one of this %Timeline must be specified with the -t flag

The -t flag is present (and shown on the screen).

I wonder if anyone knows a more generic solution for the problem of not being able to compile the extension module with qt, and if anyone understands the problem with self.spawn.


For completeness I also include my setup.py script

from distutils.core iport setup, Extension
import pyqtdistutils

setup(
 name = 'Cyclops',
 version = '0.1',
 scripts = ["scripts/Cyclops"],
 packages = ["Cyclopswidgets", "Cyclopsdata"],
 ext_modules = [
 Extension("Cyclopsdata.pylib", ["Cyclopsdata/datwrap.sip",
 "Cyclopsdata/fileio.cpp", "CyclopsModel.cpp"],
 include_dirs=["Cyclopsdata", "/usr/local/lib", "/usr/lib/qt3/include",
 /usr/share/sip"], library_dirs=["/usr/local/lib", "/usr/lib/qt3/lib"],
 libraries=["qt", "tiff"])
  ],
 cmdclass = {'build_ext': pyqtdistutils.build._ext }
)


Thnx all, Jasper


--

Jasper R. Plaisier
Biophysical Structural Chemistry Department
Leiden Institute of Chemistry
Leiden University
P.O. Box 9502, 2300 RA Leiden
The Netherlands

_______________________________________________
PyKDE mailing list    PyKDE@mats.imk.fraunhofer.de
http://mats.imk.fraunhofer.de/mailman/listinfo/pykde

Reply via email to