环境:centos7、python2.7
最近想做爬虫,觉得scrapy这个框架比较好,但是这个框架对ubuntu的支持很好,安装非常便捷,不过我用的centos7,折腾了不少时间。存在的问题跟其它人都一样,就是包依赖性的问题。
官方文档说,使用pip安装scrapy之前需要setuptools,pip依赖于setuptools,默认自带,所以不必安装。如果你不放心可以使用 pip install setuptools
,会提示你已经安装好了。
官方文档还说,需要安装lxml。lxml顾名思义,是用来解析XML、HTML并建立DOM的库,依然使用 pip install setuptools
安装。
另外还需要openssl。openssl因为其“心脏出血”漏洞,以及其后暴露出的项目组管理上问题受到了开源社区和各大操作系统厂家的批评,不过我们的scrapy框架依赖于openssl,所以还得安装它。各大linux上基本都默认安装了openssl,可以使用rpm -qa openssl
查看,并使用yum -y install openssl
安装。
在做完以上前期工作之后,我使用pip install scrapy
,安装了一会后出现提示:
Command “/usr/bin/python -c “import setuptools, tokenize;file=’/tmp/pip-build-6svGBx/cffi/setup.py’;exec(compile(getattr(tokenize, ‘open’, open)(file).read().replace(‘\r\n’, ‘\n’), file, ‘exec’))” install –record /tmp/pip-JJNTSq-record/install-record.txt –single-version-externally-managed –compile” failed with error code 1 in /tmp/pip-build-6svGBx/cffi
意思应该是编译cffi的时候出了问题,于是尝试pip install cffi
出现类似的错误提示,确定是这个错误了,但是为什么导致了这个错误以及怎样解决不知道。于是上overstack、百度、google搜,发现大部分人的问题都是包依赖性的问题,我觉得我这个也有很大可能是这个原因。于是按照其他人的做法,安装了很多包,最后发现错误出现在一个叫 libffi的库上面,libffi是一个用于高级语言之间的相互调用的处理的库。于是 pip install libffi-devel
,然后pip install scrapy
,成功!问题应该是编译cffi的时候少了libffi库!
问题因环境和操作而异,但是我觉得centos上安装scrapy的绝大多数问题都是包和库依赖性的问题,多看看其他人的解决方法、多试试就肯定能解决的。