原创文章,欢迎转载。转载请注明:转载自 祥的博客
原文链接:https://blog..net/humanking7/article/details/80393070
先放资源
问题
编译PyQT5
step1. 安装SIP
step2. 下载PyQT源码
step3 Python configure.py
错误3.1: nmake.exe,qmake.exe,mk.exe 不在系统环境中
错误3.2: 缺少 *.h 和 *.lib 文件 [最后证明这个方法好蠢]
错误3.3: 协议冲突
错误3.4: Error: Make sure you have a working sip on your PATH
成功 Python configure.py
step4. nmake
错误4.1: 又凉了,源码编译有问题
错误4.2: 要禁掉部分组件
step5. nmake install
测试
小结
干货
先放资源
需要环境为:
VS2013
Python3.6.1 x86
1.编译好的sip-4.19.8
编译好的资源sip:https://download..net/download/humanking7/10428493
2.编译好的PyQT5.10.1
编译好的资源PyQT:https://download..net/download/humanking7/10428457
已经编译编译好了,只需要解压,cmd进入后运行nmake install
我的开发环境:
Windows7 x64
VS2013
Qt5.5.0 x86
Python3.6.1 x86
问题
我一直用的是 Qt5.5.0 开发GUI,而Python不是主要工作语言,所以也没关注,一直用的Python3.6.1这个版本,最近想对Python进阶学习一下,想学一下PyQt,为了让我原来写的Python程序人机交互更好一点,方便使用,就瞄上了PyQt。
原因无他,就是有Qt的基础,而且够用、效率高于标准库的Tkinter
但是,网上要么用pip,要么是自己编译
pip3 install PyQT5
但是用pip的好处和坏处都很明显
好处: 方便
坏处: 没办法知己控制Qt的版本,需要联网,下载太慢了(这条针对我?)
自己编译,对于用惯了集成开发环境的我,简直是噩梦,网上教程又少,而且大家的情况都不一样,所以我也是摸着石头过河。
编译PyQT5
step1. 安装SIP
Python中使用C/C++模块有许多工具,大名鼎鼎的有SWIG(英文意思为:豪饮)、SIP(英文意思为:啜饮,小口的喝),还有boost.python等。其中SIP是从SWIG发展而来,专为Python调用C/C++模块使用的(看SIP的命名就能看出来,很有意思的)。
为了简单,我就直接调pip安装了
pip install SIP
后面发现pip安装出来的没法用,见错误4,所以用源码安装
# Step1.先运行C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat 配置编译环境
> "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"
# Step2.进入sip源码目录
> cd C:\sip-4.19.8
# Step3.获得Makefile文件
> python configure.py
# Step4. nmake
> nmake
# Step5. 安装
> nmake install
step2. 下载PyQT源码
网上先下载针对 Qt5.5.0的PyQT5源码。
PyQT5: https://sourceforge.net/projects/pyqt/files/PyQt5/
我选择: PyQt-gpl-5.5.zip
编译好的是针对 Python3.4 我这里无法使用
step3 Python configure.py
这一步真是 一千个读者有一千个哈姆雷特 我这一步出现了各种问题,一直用 --verbose 在查找出现的错误。
打开cmd,进入PyQt-gpl-5.5.zip解压后的的目录
> cd C:\PyQt-gpl-5.5
> python configure.py --verbose >> 1.log
错误3.1: nmake.exe,qmake.exe,mk.exe 不在系统环境中
添加到系统环境变量的Path 中
D:\Qt\Qt5.5.0_x86\5.5\msvc2013\bin\;
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin;
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin
错误3.2: 缺少 *.h 和 *.lib 文件 [最后证明这个方法好蠢]
——————————-
最正确的方法补充:
进行nmake之前,先要在CMD中运行 vcvars32.bat 文件,用来配置nmake编译环境
该文件在你的编译器安装位置:
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat
> "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\vcvars32.bat"
> nmake #等操作
——————————-
出现了错误,打开 1.log 文件
Querying qmake about your Qt installation...
Determining the details of your Qt installation...
D:\Qt\Qt5.5.0_x86\5.5\msvc2013\bin\qmake.exe -spec win32-msvc2010 -o qtdetail.mk qtdetail.pro
nmake -f qtdetail.mk release
Microsoft (R) 程序维护实用工具 12.00.21005.1 版
版权所有 (C) Microsoft Corporation。 保留所有权利。
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\nmake.exe" -f qtdetail.mk.Release
Microsoft (R) 程序维护实用工具 12.00.21005.1 版
版权所有 (C) Microsoft Corporation。 保留所有权利。
cl -c -nologo -Zc:wchar_t -O2 -MD -GR -W3 -w34100 -w34189 -w44996 -EHsc -DUNICODE -DWIN32 -DQT_NO_DEBUG -DQT_CORE_LIB -DNDEBUG -I. -ID:\Qt\Qt5.5.0_x86\5.5\msvc2013\include -ID:\Qt\Qt5.5.0_x86\5.5\msvc2013\include\QtCore -Irelease -ID:\Qt\Qt5.5.0_x86\5.5\msvc2013\mkspecs\win32-msvc2010 -Forelease\@C:\Users\Arthur\AppData\Local\Temp\nmDE14.tmp
qtdetail.cpp
D:\Qt\Qt5.5.0_x86\5.5\msvc2013\include\QtCore/qglobal.h(39) : fatal error C1083: 无法打开包括文件: “cstddef”: No such file or directory
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\cl.EXE"”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\nmake.exe"”: 返回代码“0x2”
Stop.
重点在于这句话:
fatal error C1083: 无法打开包括文件: “cstddef”: No such file or directory
这个cstddef 在 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include中,直接将其复制到C:\PyQt-gpl-5.5中 重新运行
> python configure.py --verbose >> 1.log
发现又会缺少其他的 *.h文件,而且这些文件都在 C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include中,索性我就把这个目录下所有的*.h文件全部拷贝到C:\PyQt-gpl-5.5中
最后发现,会缺少 *.lib 文件,根据提示,我把需要的lib 文件全部复制到C:\PyQt-gpl-5.5中【捂脸,我不知道如何在configure.py中配置环境啊,那个大佬会,跪求讲解】
下图所示,各种拖进来的lib和h文件,很无奈。
错误3.3: 协议冲突
> python configure.py --verbose >> 1.log
Error: This version of PyQt5 and the commercial version of Qt have incompatible
licenses.
这个就要修改configure.py文件,将其注释
# Common checks.
# if introspecting and target_config.qt_licensee != 'Open Source' and ltype == 'GPL':
# error(
# "This version of PyQt5 and the commercial version of Qt have "
# "incompatible licenses.")
错误3.4: Error: Make sure you have a workin