[PyQt] Bug in PyQt5.Qt
Phil Thompson
phil at riverbankcomputing.com
Sun Jun 15 11:04:01 BST 2014
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
More information about the PyQt
mailing list