Windows下在Python 2.7的virtualenv中编译PyQt5

目录

该文章中的方法已过时,请使用pip install pyqt5直接安装PyQt

PyQt5只提供Python3的二进制包,而且PyQt的安装包不支持virtualenv,所以我选择手动编译PyQt5。

环境

Python2.7,32位版本。

Qt 5.2.1 版本,我使用官方vs2010的预编译包。

编译器,鉴于我使用vs2010版的Qt,我使用VS2008作为编译器。Python的二进制包似乎由vs2008变异而来。

Python源码包

SIP:sip-4.15.5.zip

PyQt5:PyQt-gpl-5.2.1.zip

两者均从PyQt的官网上下载。

准备

创建全新的virtualenv环境:

virtualenv --no-site-packages ENV  

进入编译环境

编译PyQt需要qt工具和编译器,所以我先进入VS2008的命令行,再将QT的bin目录加入到PATH变量中。然后再启动虚拟环境。

ENV/Scripts/activate  

因为编译sip时需要python27.lib,但如此建立虚拟环境时没有拷贝python\libs目录,所以将python的libs目录拷贝到ENV目录下。

编译时还需要python\include目录,所以也将include拷贝到ENV目录下。

编译

参照官方安装说明即可。

编译sip

 
python configure.py
nmake
nmake install

安装后,sip.exe被拷贝到ENV目录下,但在虚拟环境的PATH中只有ENV\Scripts目录,在下一步编译PyQt是会使用sip.exe,所以要将sip.exe拷贝到Scripts目录下。

编译PyQt5

python configure.py
nmake
nmake install

使用PyQt5

使用PyQt5时,需要保证PATH中含有qt5的动态链接库文件,无法找到qt5的dll文件,导入模块时就会出错。

ImportError: DLL load failed: 找不到指定的模块。

如此即可使用PyQt5.