Pyqtdeploy Complie Win32 Version PyQtWin32静态编译记录

时间:2021-02-04 17:07:49

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

核心步骤

  1. 静态编译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
  2. 编译 Qt工程

具体操作

  1. 安装准备工作

    安装以下
    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
  2. 下载源码

    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
  3. 配置环境变量

    将下列路径添加进入系统环境变量,重启
    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

    Pyqtdeploy Complie Win32 Version PyQtWin32静态编译记录

     CMD 测试 命令配置情况:
    nmake -help
    vcvars32
    qmake --version
    python --version
    pip --version

    Pyqtdeploy Complie Win32 Version PyQtWin32静态编译记录

  4. PIP 安装 PyQtDeploy

    pip install pyqtdeploy
  5. 静态编译 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"

    Pyqtdeploy Complie Win32 Version PyQtWin32静态编译记录

  6. 静态编译 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
  7. 静态编译 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

    Pyqtdeploy Complie Win32 Version PyQtWin32静态编译记录

    继续编译
    vcvars32
    make
    make install
  8. 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
```

Pyqtdeploy Complie Win32 Version PyQtWin32静态编译记录
Pyqtdeploy Complie Win32 Version PyQtWin32静态编译记录
Pyqtdeploy Complie Win32 Version PyQtWin32静态编译记录
Pyqtdeploy Complie Win32 Version PyQtWin32静态编译记录
Pyqtdeploy Complie Win32 Version PyQtWin32静态编译记录
10. 编译生成的Qt工程
上步骤生成的代码在 D:\Qt\SYSROOT\project\build
如果你给nmake重命名了可以在最后一栏里面选择一次性 make

CMD 操作
D:
cd D:\Qt\SYSROOT\project\build
qmake
vcvars32
nmake

然后你就得到了编译好的 exe 文件了

Pyqtdeploy Complie Win32 Version PyQtWin32静态编译记录