[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