[PyQt] Next Releases
Phil Thompson
phil at riverbankcomputing.com
Wed Sep 10 15:52:16 BST 2014
On 10/09/2014 3:36 pm, Georg Brandl wrote:
> On 09/10/2014 10:05 AM, Phil Thompson wrote:
>
>>> Hmm, as far as I can understand the thing after looking into "man
>>> dlopen" a
>>> bit: the designer loads its plugins with QPluginLoader, which by
>>> default
>>> doesn't use the RTLD_GLOBAL flag (i.e. ExportExternalSymbolsHint in
>>> Qt
>>> parlance). The libpyqt4.so designer plugin is loaded, and since it
>>> is
>>> dynamically linked with libpython2.7, that one gets loaded too, but
>>> is
>>> not
>>> available for global symbol resolution.
>>>
>>> Now the sip.so extension is *not* linked with libpython2.7 (like all
>>> Python
>>> extension modules), so when it gets loaded with dlopen (by Python),
>>> the
>>> linker
>>> can't find the symbols exported by the Python library. The old code
>>> basically
>>> enforced Python symbols to be global and available for resolution by
>>> the linker.
>>
>> The previous behaviour has been restored in the current PyQt4 and
>> PyQt5
>> snapshots. A little testing would be appreciated.
>
> Thanks Phil, the designer integration now works for me again.
>
> However, with the snapshot I get a traceback loading an .ui file at
> runtime.
> It appears to be a simple typo, so I won't give the full trace:
>
> File "/usr/lib64/python2.7/site-packages/PyQt4/uic/uiparser.py", line
> 430, in
> createSpacer
> lp = elem.attrib['layout--position']
> KeyError: 'layout--position'
>
> A similar change in the 4.11.1 -> snapshot diff in uiparser.py:515
> suggests this should be 'layout-position', and making that change I see
> no other immediate problem with my app.
Whoops.
Many thanks,
Phil
More information about the PyQt
mailing list