[PyQt] Private sip modules conflict with public sip module
Scott Talbert
swt at techie.net
Sun Aug 18 16:39:22 BST 2019
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.
Scott
More information about the PyQt
mailing list