想在win xp上使用pyqt5,但是发现官方并没有编译xp版的pyqt5。所以我就自己编译了一个,编译好的一个版本放在github上:[https://github.com/hustlei/PyQt5xp]
编译好的版本是python2.7+qt5.6.3+pyqt5.11 32bit
编译步骤记录如下:
Windows xp 不能运行python3.5及以上版本python。
Windows xp 不能运行qt5.7及以上版本qt。
Pyqt5官方预编译二进制文件不能在xp上运行。
Windows xp 能运行的最高版本的python版本为:python3.4和python2.7
Windows xp 上能运行的最高版本的qt为qt5.6.3
编译PyQt5,需要PyQt5源码、PyQt5-sip,python、qt以及c++编译器。windows上C++编译器可以选择msvc或MinGW。
本文选择下列版本文件编译pyqt5
因为python2.7比python3.4支持的库更多,所以使用python2.7编译pyqt5。
因为2018年qt5.6.3 msvc版只有msvc 2013,msvc 2015编译版,所以使用msvc2013。
如果想用python3.4 32bit的pyqt5,也可以根据本文编译
编译pyqt5,需要下载
感觉python2.7的库比python3.4的库更多,比如Pythonocc就没有python3.4版本的,所以,我选择了python2.7 32bit,下载地址如下:
https://www.python.org/downloads/release/python-2715/。
Qt5可以使用msvc编译器和mingw编译器,而msvc的编译器从2015开始就对xp的支持变差,就算通过各种编译配置命令设置,能xp下运行,但是会很可能发生一些奇奇怪怪的bug。而mingw编译器没有这个问题,同一个版本可以在xp win7 win10各个系统使用,而无需其他配置。
另外,Qt5目前有两个长期支持版本(Long Term Support)Qt5.6和Qt5.9,Qt5.6可以在XP和win7及以上系统开发,而Qt5.9只支持win7以上的系统开发和部署。 所以如果想使用Qt5的新功能,又想开发出的软件能在xp系统上运行,可以选择Qt5.6的mingw-32bit版本或者vs2013版本进行开发。
参考:http://doc.qt.io/qt-5.6/supported-platforms.html
下载网站是:
请注意,这几个版本是完全ok的:
vs2015编译出来的版本是不ok的,在WinXP环境下,会出现字体乱码(含删除线)的问题。
所以qt选择5.6.3版本。
需要安装和qt版本相同的visual Studio。所以我使用vs2013。
下载地址:https://msdn.itellyou.cn/
虽然qt版本比较低,但是仍然可以使用最新版本的PyQt5和pyqt5-sip源码。但是我在编译的时候遇到了下边的问题,编译的时候禁止QtNfc就可以了
QAEXABVQNdefRecord@@@Z) 已经在 sipQtNfcQList0100QNdefRecord.obj 中定义
正在创建库 release\QtNfc.lib 和对象 release\QtNfc.exp
release\QtNfc.dll : fatal error LNK1169: 找到一个或多个多重定义的符号
所以我下载了:
PyQt5还需要Qt5的dll文件以及插件文件夹,有两种方法
方法一:
直接把C:\Qt\Qt5.6.3\5.6.3\msvc2013\bin目录添加到path环境变量
方法二:
把C:\Qt\Qt5.6.3\5.6.3\msvc2013\目录下的bin文件夹和plugins文件夹复制到python27/Lib/site-packages/PyQt5目录下,然后编辑PyQt5目录下__init__.py文件,添加如下代码:
import os
dir=os.path.join(os.path.dirname(__file__),'bin;')
os.environ['path']=dir+os.environ['path']
from PyQt5.QtWidgets import QApplication
QApplication.addLibraryPath(os.path.join(os.path.dirname(__file__),"plugins"));
注:使用vs2013编译的pyqt5,依赖VC12运行库,所以不要忘记msvcr120.dll和msvcp120.dll
32bit python2.7 版pyqt5编译安装成功,enjoy it!