python - PyQt5 的 PyQt5.sip 文件不是由 SIP 库生成的
问题描述
我正在使用 Visual Studio 2017 在 Windows 10 上构建 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
这是 win32 上 Python 2.7.15 的 SIP 4.19.12。
PyQt5.sip 模块将安装在
C:\Users\FiFo\AppData\Local\Programs\Python\Python27\Lib\site-packages\PyQt5.
sip.pyi 存根文件将安装在
C:\Users\FiFo\AppData\Local\Programs\Python\Python27\Lib\site-packages\PyQt5.
安装 .sip 文件的默认目录是
C:\Users\FiFo\AppData\Local\Programs\Python\Python27\sip。创造
sipconfig.py... 创建顶级 Makefile... 创建 sip 代码
生成器 Makefile... 创建 sip 模块 Makefile...
设置 x86 构建环境
"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" x86
其次是nmake:
Microsoft (R) 程序维护实用程序版本 14.15.26729.0 版权所有 (C) Microsoft Corporation。版权所有。
cd siplib C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\bin\HostX86\x86\nmake.exe
Microsoft (R) 程序维护实用程序版本 14.15.26729.0 版权所有 (C) Microsoft Corporation。版权所有。
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
描述符.c qtlib.c 线程.c objmap.c voidptr.c 数组.c
int_convertors.c 生成代码...
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 创建
库 sip.lib 和对象 sip.exp
mt -nologo -manifest sip.pyd.manifest -outputresource:sip.pyd;2
然后使用 nmake install 安装软件包:
Microsoft (R) 程序维护实用程序版本 14.15.26729.0 版权所有 (C) Microsoft Corporation。版权所有。
cd siplib "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\VC\Tools\MSVC\14.15.26726\bin\HostX86\x86\nmake.exe"
安装
Microsoft (R) 程序维护实用程序版本 14.15.26729.0 版权所有 (C) Microsoft Corporation。版权所有。
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 已安装。文本文件
D:\opencv\sip-4.19.12\sipgen>点冻结
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 六==1.11.0
但是我在任何地方都找不到那个 PyQt5.sip 文件。构建 PyQt 提供:
D:\opencv\PyQt5_gpl-5.11.2>python configure.py Querying qmake about your Qt installation... 错误:无法导入 PyQt5.sip。确保您已将 SIP 配置为创建 sip 模块的私有副本。
解决方案
这是稳定版本的错误。作者建议下载有效的最新快照。另一种解决方案是:
“在包含 sip.pyd 的同一目录中创建一个空的 __init__.py 文件。”
之后我配置了:
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
推荐阅读
- javascript - 在 JavaScript 中,当必须缩小文件时省略分号是否安全?
- javascript - 一些图像即使存在也没有加载到反应应用程序中
- c++ - Eigen:在子矩阵上重复操作的有效方法
- firebase - Firebase 按存在的孩子排序
- amazon-web-services - Terraform 分离并重新附加 ebs 卷
- swift - 您可以强制字典返回非可选或断言吗?
- sql-server - 透视 SQL 服务器结果
- java - 来自系统属性的 spring.datasource.password 不起作用
- c - 为什么可重入随机生成器 rand_r() 被认为是弱的?
- php - Laravel 6:使用另一个哈希加密/解密,而不是默认值