Re: Private sip modules conflict with public sip module
Scott Talbert <[email protected]>
| Newsgroups | gmane.comp.python.pyqt-pykde |
|---|---|
| Message-ID | <[email protected]> |
On August 18, 2019 12:31:59 PM EDT, Phil Thompson <[email protected]> wrote: >On 18/08/2019 16:52, Scott Talbert wrote: >> On August 18, 2019 11:39:22 AM EDT, Scott Talbert <[email protected]> >> wrote: >>> >>> >>> On August 18, 2019 11:03:21 AM EDT, Phil Thompson >>> <[email protected]> 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? > >No up to date package should be using a top-level sip module. > >If you are patching wxpython(!) then you can remove the reference PyQt >adds sys.modules first. That seems way too fragile. I would have to do that anywhere wx imports sip, and any wx users that use sip would have to do it too. I can probably live with switching back to the namespaced sip module though. Scott _______________________________________________ PyQt mailing list [email protected] https://www.riverbankcomputing.com/mailman/listinfo/pyqt