[PyQt] Private sip modules conflict with public sip module

Phil Thompson phil at riverbankcomputing.com
Sun Aug 18 16:03:21 BST 2019


On 18/08/2019 15:45, Scott Talbert wrote:
> On Sun, 18 Aug 2019, Phil Thompson wrote:
> 
>>> See the below example:
>>> 
>>> $ python3
>>> Python 3.7.4 (default, Jul  9 2019, 16:32:37)
>>> [GCC 9.1.1 20190503 (Red Hat 9.1.1-1)] on linux
>>> Type "help", "copyright", "credits" or "license" for more 
>>> information.
>>>>>> import PyQt5.sip
>>>>>> import sip
>>>>>> sip
>>> <module 'PyQt5.sip' from 
>>> '/usr/lib64/python3.7/site-packages/PyQt5/sip.so'>
>>>>>> 
>>> 
>>> Basically, if you import a private sip module and then import the
>>> public one, it doesn't work.  It seems to be due to this:
>>> 
>>> https://www.riverbankcomputing.com/hg/sip/file/4.19-maint/siplib/siplib.c#l1293
>> 
>> Why would you want to do that?
> 
> I don't particularly *want* to do that, but it happens in the wild
> with applications.  For example:
> 
> fsleyes imports matplotlib
> matplotlib imports PyQt as part of its backend detection
> fsleyes imports wxpython
> wxpython imports sip -> fail

wxpython uses a private copy of the sip module so I don't see what is 
importing a top-level sip module in that situation.

Phil


More information about the PyQt mailing list