環(huán)境:centos7、python2.7
最近想做爬蟲,覺得scrapy這個(gè)框架比較好,但是這個(gè)框架對(duì)ubuntu的支持很好,安裝非常便捷,不過我用的centos7,折騰了不少時(shí)間。存在的問題跟其它人都一樣,就是包依賴性的問題。
官方文檔說,使用pip安裝scrapy之前需要setuptools,pip依賴于setuptools,默認(rèn)自帶,所以不必安裝。如果你不放心可以使用 pip install setuptools
,會(huì)提示你已經(jīng)安裝好了。
官方文檔還說,需要安裝lxml。lxml顧名思義,是用來解析XML、HTML并建立DOM的庫,依然使用 pip install setuptools
安裝。
另外還需要openssl。openssl因?yàn)槠洹靶呐K出血”漏洞,以及其后暴露出的項(xiàng)目組管理上問題受到了開源社區(qū)和各大操作系統(tǒng)廠家的批評(píng),不過我們的scrapy框架依賴于openssl,所以還得安裝它。各大linux上基本都默認(rèn)安裝了openssl,可以使用rpm -qa openssl
查看,并使用yum -y install openssl
安裝。
在做完以上前期工作之后,我使用pip install scrapy
,安裝了一會(huì)后出現(xiàn)提示:
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
意思應(yīng)該是編譯cffi的時(shí)候出了問題,于是嘗試pip install cffi
出現(xiàn)類似的錯(cuò)誤提示,確定是這個(gè)錯(cuò)誤了,但是為什么導(dǎo)致了這個(gè)錯(cuò)誤以及怎樣解決不知道。于是上overstack、百度、google搜,發(fā)現(xiàn)大部分人的問題都是包依賴性的問題,我覺得我這個(gè)也有很大可能是這個(gè)原因。于是按照其他人的做法,安裝了很多包,最后發(fā)現(xiàn)錯(cuò)誤出現(xiàn)在一個(gè)叫 libffi的庫上面,libffi是一個(gè)用于高級(jí)語言之間的相互調(diào)用的處理的庫。于是 pip install libffi-devel
,然后pip install scrapy
,成功!問題應(yīng)該是編譯cffi的時(shí)候少了libffi庫!
問題因環(huán)境和操作而異,但是我覺得centos上安裝scrapy的絕大多數(shù)問題都是包和庫依賴性的問題,多看看其他人的解決方法、多試試就肯定能解決的。