PyQt5.5.1在Python3.5.1和Visual Studio 2013下的编译

时间:2022-07-01 03:50:20

项目上要用mitmproxy库,但在python3.5下面用pip install mitmproxy一直安装不上,报错xmlversion.h找不到的问题,以及vcvarsall.bat找不到的问题。

终于一一破解,成功地在python3.5下面安装好了mitmproxy。但项目进行过程中,又需要用到PyQt,但又没有针对python3.5.1的PyQt5,只有针对python3.4版本的。

处女座的我实在无法忍受删掉python3.5.1,转而去安装python3.4的版本,索性切回python2.7。但python2.7只好用PyQt4,这又是一个不完美的配置,但也就这么将就着了。

 

今天终于有空来处理这个问题,于是下载了:

  • vs2013.5_ce_enu.iso
  • qt-opensource-windows-x86-msvc2013_64-5.5.1.exe
  • sip-4.17.zip(PyQt5的编译依赖于sip包)
  • PyQt-gpl-5.5.1.zip

1. 首先安装qt,然后再安装vs2013。用vs2013的原因是因为qt5.5.1的库都是2013编译出来的,用vs2015在编译PyQt5.5.1时会出现__MSC_VER版本不匹配的错误。

2. 编译sip

  • 进入vs2013的64位native命令行(会自动设置好所有INCLUDE,PATH和LIB环境变量)
  • 进入virtualenv的python环境(用Scripts下的activate脚本激活)
  • cd sip目录
  • 运行python configure.py
  • 发现依赖python35.lib,在当前环境下set LIB=%LIB%C:\Python\libs(看你的安装位置来调整路径)
  • 再次运行python configure.py
  • nmake 编译成功

    此时,我们就有了sip.exe,sip.h,sip.lib这几个文件。

3. 编译PyQt5.5.1

  • 进入vs2013的64位native命令行(会自动设置好所有INCLUDE,PATH和LIB环境变量)
  • 进入virtualenv的python环境(用Scripts下的activate脚本激活)
  • 切换到PyQt5.5.1 目录
  • 运行python configure.py --sip=\path\to\sip.exe --sip-incdir=\path\to\sip.h 
  • nmake
  • nmake install(有点漫长)

搞定,所有的PyQt5将被安装到你的python的site-packages下面。