PyQtWin32静态编译记录 PyQt5篇
上一篇中记录了 PyQtDeploy 给 Android-32 编译的过程,虽然没有成功,这次我来玩一下 Windows 平台,人懒上次没写
编译出来的最小程序未压缩为 9 MB,Upx压缩后 1.8MB
PyQtDeploy对于 QAxContainer QtLocation QtPositioning 以及 _QOpenGLFunctions_ES2 支持貌似还有问题,编译过程删除了
编译后的SYSROOT打包:http://pan.baidu.com/s/1mh3dYhM
相关参考资料
https://pypi.python.org/pypi/pyqtdeploy/
http://pyqt.sourceforge.net/Docs/pyqtdeploy/tutorial.html
相关下载点
http://www.qt.io/download-open-source/
https://riverbankcomputing.com/software/sip/download
https://riverbankcomputing.com/software/pyqt/download5
https://www.python.org/downloads/source/
编译环境
1.Windows 10 Pro
2.Qt5.5.1 Python3.4.0 PyQt-gpl-5.5 sip-4.17 pyqtdeploy1.1 vs2010
核心步骤
- 静态编译Qt5.5.0 Python3.4.0 PyQt-gpl-5.5 sip-4.16.9 的 Win-32 平台版本 http://pyqt.sourceforge.net/Docs/pyqtdeploy/static_builds.html
- 编译 Qt工程
具体操作
安装准备工作
安装以下 X16-60997VS2010UltimTrialCHS.iso qt-opensource-windows-x86-msvc2010-5.5.1.exe Python-3.4.0.msi + pip PyQt5-5.5.1-gpl-Py3.4-Qt5.5.1-x32.exe
下载源码
https://www.python.org/ftp/python/3.4.0/Python-3.4.0.tar.xz http://sourceforge.net/projects/pyqt/files/sip/sip-4.17/sip-4.17.zip http://sourceforge.net/projects/pyqt/files/PyQt5/PyQt-5.5.1/PyQt-gpl-5.5.1.zip
配置环境变量
将下列路径添加进入系统环境变量,重启 C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Lib D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include D:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE D:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin C:\Qt\Qt5.5.1\5.5\msvc2010\bin D:\Python34 D:\Python34\Scripts
并 CMD 测试 命令配置情况: nmake -help vcvars32 qmake --version python --version pip --version
PIP 安装 PyQtDeploy
pip install pyqtdeploy
静态编译 Python
选择一个文件夹作为我们的工作文件夹,这里使用 D:\Qt\SYSROOT
将下载好的源码文件放置在 D:\Qt\SYSROOT\src 内并解压CMD 操作 D: D:\Qt\SYSROOT\src\Python-3.4.0 pyqtdeploycli --package python --target win-32 configure qmake SYSROOT=D:\Qt\SYSROOT vcvars32 nmake nmake install
如果出现 io.h 未找到的错误,则在生成的 python.pro 里面加入以下两行,并从 qmake 继续编译
INCLUDEPATH += "D:\\Program Files (x86)\\Microsoft Visual Studio 10.0\\VC\\include" INCLUDEPATH += "C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Include"
静态编译 sip
CMD 操作 D: cd D:\Qt\SYSROOT\src\sip-4.17 pyqtdeploycli --package sip --target win-32 configure python configure.py --static --sysroot=D:/Qt/SYSROOT --no-tools --use-qmake --configuration=sip-win.cfg qmake vcvars32 make make install
静态编译 PyQt5
CMD 操作 D: cd D:\Qt\SYSROOT\src\PyQt-gpl-5.5.1 pyqtdeploycli --package pyqt5 --target win-32 configure
此时编辑 pyqt5-win.cfg 可以裁剪配置去除无需编译的库
这里删除了 QAxContainer QtLocation QtPositioning 以及 _QOpenGLFunctions_ES2 后编译 OK,时间会比较长[Qt 5.5] pyqt_modules = QtCore QtGui QtMultimedia QtMultimediaWidgets QtNetwork QtOpenGL QtPrintSupport QtQml QtQuick QtQuickWidgets QtSvg QtTest QtWebChannel QtWebSockets QtWidgets QtWinExtras QtXml QtXmlPatterns
继续编译 vcvars32 make make install
PyQtDeploy生成Qt工程
1.创建工程文件夹 D:\Qt\SYSROOT\project,创建pyqt代码PyQtDeployTest.py
from PyQt5 import QtWidgets,QtGui,QtCore
import sys
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
w = QtWidgets.QWidget()
b = QtWidgets.QPushButton(w)
b.setText("hello pyqtdeploy")
w.show()
app.exec_()
```
CMD 操作
pyqtdeploy PyQtDeployTest.pdy
```
10. 编译生成的Qt工程
上步骤生成的代码在 D:\Qt\SYSROOT\project\build
如果你给nmake重命名了可以在最后一栏里面选择一次性 make
CMD 操作
D:
cd D:\Qt\SYSROOT\project\build
qmake
vcvars32
nmake
然后你就得到了编译好的 exe 文件了