pythonpyqt5python-sip

PyQt5's PyQt5.sip File is Not Generated by the SIP Library


I'm building SIP 4.19.12 and PyQt 5.11.2 on Windows 10 with Visual Studio 2017. I'm planning to do that for Python x86 2.7.15. I downloaded the versions above and extracted them, installed enum34 with pip, the configured SIP with

python configure.py --sip-module PyQt5.sip --no-tools

This is SIP 4.19.12 for Python 2.7.15 on win32.

The PyQt5.sip module will be installed in

C:\Users\FiFo\AppData\Local\Programs\Python\Python27\Lib\site-packages\PyQt5.

The sip.pyi stub file will be installed in

C:\Users\FiFo\AppData\Local\Programs\Python\Python27\Lib\site-packages\PyQt5.

The default directory to install .sip files in is

C:\Users\FiFo\AppData\Local\Programs\Python\Python27\sip. Creating

sipconfig.py... Creating top level Makefile... Creating sip code

generator Makefile... Creating sip module Makefile...

Setup the x86 building environment with

"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86

Followed by nmake:

Microsoft (R) Program Maintenance Utility Version 14.15.26729.0 Copyright (C) Microsoft Corporation. All rights reserved.

    cd siplib
    C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\bin\HostX86\x86\nmake.exe

Microsoft (R) Program Maintenance Utility Version 14.15.26729.0 Copyright (C) Microsoft Corporation. All rights reserved.

    cl -c -nologo -Zm200 -Zc:wchar_t- -O2 -MD -W3 -DNDEBUG -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DSIP_MODULE_NAME=\"PyQt5.sip\" -I. -IC:\Users\FiFo\AppData\Local\Programs\Python\Python27\include -Fo @C:\Users\FiFo\AppData\Local\Temp\nm8C0F.tmp siplib.c apiversions.c

descriptors.c qtlib.c threads.c objmap.c voidptr.c array.c

int_convertors.c Generating Code...

    cl -c -nologo -Zm200 -Zc:wchar_t- -O2 -MD -W3 -w34100 -w34189 -DNDEBUG -DUNICODE -DWIN32 -DQT_LARGEFILE_SUPPORT -DSIP_MODULE_NAME=\"PyQt5.sip\" -I. -IC:\Users\FiFo\AppData\Local\Programs\Python\Python27\include -Fo @C:\Users\FiFo\AppData\Local\Temp\nm9111.tmp bool.cpp

    link /NOLOGO /DYNAMICBASE /NXCOMPAT /DLL /MANIFEST /MANIFESTFILE:sip.pyd.manifest /SUBSYSTEM:CONSOLE /INCREMENTAL:NO

/OUT:sip.pyd @C:\Users\FiFo\AppData\Local\Temp\nm9170.tmp Creating

library sip.lib and object sip.exp

    mt -nologo -manifest sip.pyd.manifest -outputresource:sip.pyd;2

Then installed the packages with nmake install:

Microsoft (R) Program Maintenance Utility Version 14.15.26729.0 Copyright (C) Microsoft Corporation. All rights reserved.

    cd siplib
    "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\bin\HostX86\x86\nmake.exe"

install

Microsoft (R) Program Maintenance Utility Version 14.15.26729.0 Copyright (C) Microsoft Corporation. All rights reserved.

    copy /y sip.pyd C:\Users\FiFo\AppData\Local\Programs\Python\Python27\Lib\site-packages\PyQt5\sip.pyd
    1 file(s) copied.
    copy /y D:\opencv\sip-4.19.12\sip.pyi C:\Users\FiFo\AppData\Local\Programs\Python\Python27\Lib\site-packages\PyQt5\sip.pyi
    1 file(s) copied.
    C:\Users\FiFo\AppData\Local\Programs\Python\Python27\python.exe

D:\opencv\sip-4.19.12\mk_distinfo.py "" C:\Users\FiFo\AppData\Local\Programs\Python\Python27\Lib\site-packages\PyQt5_sip-4.19.12.dist-info installed.txt

D:\opencv\sip-4.19.12\sipgen>pip freeze

backports.functools-lru-cache==1.5 cycler==0.10.0 enum34==1.1.6 kiwisolver==1.0.1 matplotlib==2.2.3 numpy==1.15.1 Pillow==5.2.0 pynaoqi==2.1.4.13 pyparsing==2.2.0 PyQt5-sip==4.19.12 python-dateutil==2.7.3 pytz==2018.5 six==1.11.0

But I cannot find that PyQt5.sip file anywhere. Building PyQt gives:

D:\opencv\PyQt5_gpl-5.11.2>python configure.py Querying qmake about your Qt installation... Error: Unable to import PyQt5.sip. Make sure you have configured SIP to create a private copy of the sip module.


Solution

  • It was a bug with the stable version. The authors suggested downloading the latest snapshot which worked. Another solution would be:

    "to create an empty __ init__.py file in the same directory containing sip.pyd."

    After that I configured with:

    python configure.py --qmake d:\qt5_32\bin\qmake.exe --static --sip-incdir ..\sip-4.19.13.dev1809111822\siplib --sip d:\opencv\sip-4.19.13.dev1809111822\sipgen\sip.exe --confirm-license