PyQt4安装注意事项(Win7 64位)

最近启动了一项大数据抓取测试项目,除了可以通过api和网页爬取的数据之外,那些以flash、silverlight之类展示的数据或者经过层层加密的数据,对抓取数据提出了不少挑战。

对于这一类数据,我最终采用了基于webkit自定义浏览器进行模拟爬取的方法。关于这类方法优劣的详细叙述,可以参考《使用Webkit实现自定义浏览器进行数据采集》一文,这类方法用到了:Python语言、QT框架、SIP、PyQt4和Spynner这三个Python插件。

整个安装顺序为:

  1. 安装QT框架,下载地址,QT最新版本即可,我电脑里安装的是QT5.2.0版本,实测可用,选择适合自己的平台即可;
  2. 安装Python,下载地址,同样选择自己的系统平台;
  3. 安装SIP,下载地址,PyQt4需要依赖此插件,因此需要先行安装。鉴于大陆网络情况,推荐下载完整插件后手动安装,需要使用python进行编译安装,windows环境下还需要使用Visual Studio进行编译安装(这步非常重要,可能会遇到问题,后文详解);
  4. 安装PyQt4,下载地址,同样需要Python编译安装;
  5. 安装Spynner,下载地址,进行Python编译安装。

详细的安装教程可以参考网上的一些教程,非常详细,这里就不赘述了,可以参考《完整的qt安装教程》《如何用Python抓取动态页面信息》《Windows下PyQt4的安装》

但是这篇备忘主要记录的是Win7 64位系统下安装SIP会遇到的问题,并给出解决方案。在安装过程第3步中,我们需要用到Visual Studio进行编译安装,在64位windows系统下,VS会自带2种不同版本的命令行工具,64位的和32位的,如果根据教程中的步骤,从VS中打开命令行工具,则默认打开32位,此时进行SIP第二步编译安装,便会出现类似下列错误导致安装不成功:

fatal error LNK1112: module machine type ‘x86’ conflicts with target machine type ‘x64’

解决方法其实很简单,我们只要手动打开64位的命令行工具,再进行编译即可。具体方法:进入“开始——所有程序——Microsoft Visual Studio 2010——Visual Studio Tools——Visual Studio x64 Win64 Command Prompt (2010)”,然后再按照教程进行编译即可。以下为正确编译后的结果:

手动选择命令行工具

成功编译安装

这虽然是个小问题,但是如果没有指引的话,着实会浪费不少时间,希望能给遇到类似问题的朋友提供到帮助。