[PyQt] Private sip modules conflict with public sip module

Scott Talbert swt at techie.net
Sun Aug 18 16:52:52 BST 2019



On August 18, 2019 11:39:22 AM EDT, Scott Talbert <swt at techie.net> wrote:
>
>
>On August 18, 2019 11:03:21 AM EDT, Phil Thompson
><phil at riverbankcomputing.com> wrote:
>>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.
>
>I guess I left out an important detail.  I patch wxPython to use the
>top-level sip module.

But this is just one example.  I guess the bottom line is: do you consider this a bug, or is your answer that no one should using the top-level sip module?

Scott


More information about the PyQt mailing list