Win7安装Scrapy的一些坑

症状:无论Win 7 还是Ubuntu,一开始安装都出错了。

提示一些安装包,需要安装VC++ 9.0 。

error: Microsoft Visual C++ 9.0 is required. Get it from http://aka.ms/vcpython27

意思是:Micorsoft Visual C++ Compiler for Python 2.7 到了微软官网,点了下载按钮,就进入界面死循环了。。。 想想微软也不至于这么坑,然后换了一个电脑可以下载了,似乎是第一个电脑的火狐浏览器没有对下载地址进行响应。

安装之后,又跳出了以下界面的错误:

make sure the development packages of libxml2 and libxslt are installed

*********************************************************************************
Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?
*********************************************************************************
error: command 'C:\\Users\\Administrator.USER-20160103QG\\AppData\\Local\\Programs\\Common\\Microsoft\\Visual C++ for Python\\9.0\\VC\\Bin\\cl.exe' failed with exit status 2

----------------------------------------

Command “c:\python27\python.exe -u -c “import setuptools, tokenize;file=’c:\users\admini~1.use\appdata\local\temp\pip-build-u4tij9\lxml\setup.py’;exec(compile(getattr(tokenize, ‘open’, open)(file).read().replace(‘\r\n’, ‘\n’), file, ‘exec’))” install –record c:\users\admini~1.use\appdata\local\temp\pip-ywtnot-record\install-record.txt –single-version-externally-managed –compile” failed with error code 1 in c:\users\admini~1.use\appdata\local\temp\pip-build-u4tij9\lxml\

从上面的信息看:基于lxml的libxml2 and libxslt这两个包需要安装,但pip install lxml 也是错误提示,依然有需要安装VC++的提示,可刚不是装过了吗?。。。。 想了下 之前有装另外一个版本,所以刚是repair的方式,干脆卸载了重新装一次看看?结果一样错误。

到知乎上:
深海鱼
77 人赞同
刚从这个大坑里爬出来:

  1. 安装wheel,命令行运行:
    pip install wheel
    2.在这里下载对应的.whl文件,注意别改文件名! http://www.lfd.uci.edu/~gohlke/pythonlibs/#lxml
  2. 进入.whl所在的文件夹,执行命令即可完成安装
    pip install 带后缀的完整文件名

对应操作,结果也失败了,如下:

attempt to call a nil value
C:\Python27\Scripts>pip install lxml-3.6.4-cp27-cp27m-win_amd64.whl
Processing lxml-3.6.4-cp27-cp27m-win_amd64.whl
error: Couldn't find a setup script in C:\Python27\Scripts\lxml-3.6.4-cp27-cp27m-win_amd64.whl

这错误提示需要一个安装脚本,可下载的是一个单独的whl文件,这。。。

后来我换了一个路径,把whl文件放到了C盘根目录,测试:

attempt to call a nil value
C:\>pip install lxml-3.6.4-cp27-cp27m-win_amd64.whl
lxml-3.6.4-cp27-cp27m-win_amd64.whl is not a supported wheel on this platform.

此时的提示是:此平台不支持这个whl文件。

那么思考:下载的是64位的whl,系统也是Win7 64位的,但是等等,Python是32位的? 果然经过核对,原来这个Python版本是老早刚学的时候一直用的32位的,于是,马上更换下载 lxml-3.6.4-cp27-cp27m-win32.whl,然后继续安装,得到ok的结果,如下:

attempt to call a nil value
C:\>pip install lxml-3.6.4-cp27-cp27m-win32.whl
Processing c:\lxml-3.6.4-cp27-cp27m-win32.whl
Installing collected packages: lxml
Successfully installed lxml-3.6.4

然后继续运行安装scrapy 搞定!

总结:
1、后来查了lxml的官网,http://lxml.de/installation.html 上面也有说道win系统的安装错误的非官方方案,其实就是知乎上的那个方案,不过官网上没写whl文件怎么安装,但可以搜索到。

2、64位还是32位?
因为系统是64位的,所以一般情况下载都已经习惯找64位的下,本篇开头就是。但是针对python安装的第三方库,需要根据python是32位还是64位来,而本篇恰巧是32位的python,以后注意。