PyQt5 的 PyQt5.sip 文件不是由 SIP 库生成的
PyQt5's PyQt5.sip File is Not Generated by the SIP Library
我正在 Windows 10 和 Visual Studio 2017 上构建 SIP 4.19.12 和 PyQt 5.11.2。我计划为 Python x86 2.7.15 这样做.
我下载了上面的版本并解压,用pip安装了enum34,配置的SIP用
python configure.py --sip-module PyQt5.sip --no-tools
这是适用于 Python 2.7.15 on win32 的 SIP 4.19.12。
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...
使用
设置 x86 构建环境
"C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86
接着是 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 Studio17\Enterprise\VC\Tools\MSVC.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
然后使用 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 Studio17\Enterprise\VC\Tools\MSVC.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
但是我在任何地方都找不到 PyQt5.sip 文件。构建 PyQt 给出:
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.
这是稳定版的一个bug。作者建议下载有效的最新快照。另一种解决方案是:
"to create an empty __ init__.py file in the same directory containing sip.pyd."
之后我配置了:
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
我正在 Windows 10 和 Visual Studio 2017 上构建 SIP 4.19.12 和 PyQt 5.11.2。我计划为 Python x86 2.7.15 这样做. 我下载了上面的版本并解压,用pip安装了enum34,配置的SIP用
python configure.py --sip-module PyQt5.sip --no-tools
这是适用于 Python 2.7.15 on win32 的 SIP 4.19.12。
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...
使用
设置 x86 构建环境"C:\Program Files (x86)\Microsoft Visual Studio17\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86
接着是 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 Studio17\Enterprise\VC\Tools\MSVC.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
然后使用 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 Studio17\Enterprise\VC\Tools\MSVC.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
但是我在任何地方都找不到 PyQt5.sip 文件。构建 PyQt 给出:
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.
这是稳定版的一个bug。作者建议下载有效的最新快照。另一种解决方案是:
"to create an empty __ init__.py file in the same directory containing sip.pyd."
之后我配置了:
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