[PyQt] Bug in PyQt5.Qt
Kovid Goyal
kovid at kovidgoyal.net
Sun Jun 15 11:18:18 BST 2014
Thanks :)
Kovid.
On Sun, Jun 15, 2014 at 11:04:01AM +0100, Phil Thompson wrote:
> Fixed in tonight's SIP snapshot. I think the root cause is a Python v2 bug.
>
> Phil
>
> On 13/06/2014 6:08 pm, Kovid Goyal wrote:
> >I confirmed it, the following implementation fixes the bug:
> >
> >static void sip_import_component_module(PyObject *d, const char *name)
> >{
> >#if PY_VERSION_HEX >= 0x02050000
> > PyObject *mod = PyImport_ImportModule(name);
> >#else
> > PyObject *mod = PyImport_ImportModule((char *)name);
> >#endif
> >
> > /*
> > * Note that we don't complain if the module can't be imported. This
> > * is a favour to Linux distro packagers who like to split PyQt into
> > * different sub-packages.
> > */
> > if (mod)
> > {
> > PyDict_Merge(d, PyModule_GetDict(mod), 0);
> > Py_DECREF(mod);
> > } else PyErr_Clear(); // Without this subsequent
> >PyImport_Importmodule calls fail
> >}
> >
> >Kovid.
> >
> >On Fri, Jun 13, 2014 at 10:12:15PM +0530, Kovid Goyal wrote:
> >>Hi Phil,
> >>
> >>Reading the source code of the PyQt5.Qt module, it is supposed to work
> >>even if some of the PyQt modules are missing. It does not. For example,
> >>remove the QtMultimedia.so module and run
> >>
> >>python -c "from PyQt5.Qt import QStyle"
> >>
> >>This raises an import error. But
> >>
> >>python -c "import PyQt5.QtWidgets; from PyQt5.Qt import QStyle"
> >>
> >>works.
> >>
> >>My best guess is that PyImport_ImportModule requires PyErr_Clear()
> >>between invocations. (I am away from my dev machine and cant test it
> >>right now).
> >>
> >>I'd appreciate if this could be fixed as it breaks calibre on linux
> >>distros where PyQt is only partially installed. I am working around it
> >>for the moment by importing PyQt5.QtWebKitIwdgets very early in calibre
> >>initialization, but this is less than optimal for obvious reasons.
> >>
> >>I could implement a more robust solution by implementing a meta import
> >>hook, but I'd rather not spend the time on that if it can be fixed
> >>simply in PyQt5.
> >>
> >>Thanks,
> >>
> >>Kovid.
> >>
> >>--
> >>_____________________________________
> >>
> >>Dr. Kovid Goyal
> >>http://www.kovidgoyal.net
> >>http://calibre-ebook.com
> >>_____________________________________
> >
> >
> >
> >>_______________________________________________
> >>PyQt mailing list PyQt at riverbankcomputing.com
> >>http://www.riverbankcomputing.com/mailman/listinfo/pyqt
> >
> >
> >_______________________________________________
> >PyQt mailing list PyQt at riverbankcomputing.com
> >http://www.riverbankcomputing.com/mailman/listinfo/pyqt
> _______________________________________________
> PyQt mailing list PyQt at riverbankcomputing.com
> http://www.riverbankcomputing.com/mailman/listinfo/pyqt
>
> !DSPAM:3,539d6fab16787315565600!
>
>
--
_____________________________________
Dr. Kovid Goyal
http://www.kovidgoyal.net
http://calibre-ebook.com
_____________________________________
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://www.riverbankcomputing.com/pipermail/pyqt/attachments/20140615/21ed5906/attachment.sig>
More information about the PyQt
mailing list