[PyQt] sip5 question / failed to register with the sip module

Phil Thompson phil at riverbankcomputing.com
Fri Jan 3 17:30:24 GMT 2020


On 03/01/2020 10:40, Phil Thompson wrote:
> On 03/01/2020 00:39, michael h wrote:
>> I'm attempting to upgrade a project so an extension module is built 
>> using
>> sip5. The extension module wraps another Qt5 based library 
>> (poppler-qt5).
>> This is on Windows 10 and I'm building 32-bit binaries.
>> 
>> I installed PyQt5 v5.14.0 and sip v5.0.1 from pypi and created a
>> pyproject.toml file for the extension module. I am using the .sip 
>> files
>> from the PyQt5-5.14.0.tar.gz source files.
>> 
>> When running `sip-build` I got the following error message:
>> sip-build: Q_PID is undefined
>> 
>> (I'm not using anything from qprocess.sip myself, so I just commented 
>> the
>> line/method in the .sip file using that typedef and moved on, I just
>> thought it was worth mentioning the possible bug, since these are the
>> unmodified .sip files from the PyQt release.)
> 
> Don't use the .sip files from the source tarball. Instead install
> PyQt5 (either from source or from the wheel). This will install the
> .sip files where sip5 expects to find them along with required
> configuration information (that deals with the Q_PID issue). Have a
> look at the site-packages/PyQt5/bindings directory.
> 
>> After that modification I was able to build the extension, but when I
>> import the extension module I get an error:
>> 
>> RuntimeError: the PyQt5.QtCore module failed to register with the sip 
>> module
>> 
>> I guessed at this being related to PyQt5 having a private sip module, 
>> so I
>> tried to use `PyQt5.sip` as the sip module name but I got the 
>> following
>> error:
>> 
>> sip-build: popplerqt5 must be part of a project when used with a 
>> shared
>> 'sip' module
>> 
>> I removed the check in sip's bindings.py to see if it would work. The
>> module was built and now works but I'm concerned about the number of
>> workarounds I'm employing here so I was hoping someone could comment 
>> on
>> whether there's a more proper approach for me to use.
> 
> Until I look through the code I can't remember why that check is done.
> Are you absolutely sure your module works properly? I'm happy to
> remove the check if it is redundant.

I've removed the check. It was there to protect against a condition that 
can no longer happen.

Phil


More information about the PyQt mailing list