環(huán)境:centos7、python2.7
最近想做爬蟲(chóng),覺(jué)得scrapy這個(gè)框架比較好伍绳,但是這個(gè)框架對(duì)ubuntu的支持很好,安裝非常便捷乍桂,不過(guò)我用的centos7冲杀,折騰了不少時(shí)間。存在的問(wèn)題跟其它人都一樣模蜡,就是包依賴(lài)性的問(wèn)題漠趁。
官方文檔說(shuō)扁凛,使用pip安裝scrapy之前需要setuptools忍疾,pip依賴(lài)于setuptools,默認(rèn)自帶谨朝,所以不必安裝卤妒。如果你不放心可以使用 pip install setuptools
,會(huì)提示你已經(jīng)安裝好了字币。
官方文檔還說(shuō)则披,需要安裝lxml。lxml顧名思義洗出,是用來(lái)解析XML士复、HTML并建立DOM的庫(kù),依然使用 pip install setuptools
安裝翩活。
另外還需要openssl阱洪。openssl因?yàn)槠洹靶呐K出血”漏洞,以及其后暴露出的項(xiàng)目組管理上問(wèn)題受到了開(kāi)源社區(qū)和各大操作系統(tǒng)廠家的批評(píng)菠镇,不過(guò)我們的scrapy框架依賴(lài)于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í)候出了問(wèn)題,于是嘗試pip install cffi
出現(xiàn)類(lèi)似的錯(cuò)誤提示轴猎,確定是這個(gè)錯(cuò)誤了嵌莉,但是為什么導(dǎo)致了這個(gè)錯(cuò)誤以及怎樣解決不知道。于是上overstack税稼、百度烦秩、google搜垮斯,發(fā)現(xiàn)大部分人的問(wèn)題都是包依賴(lài)性的問(wèn)題,我覺(jué)得我這個(gè)也有很大可能是這個(gè)原因只祠。于是按照其他人的做法兜蠕,安裝了很多包,最后發(fā)現(xiàn)錯(cuò)誤出現(xiàn)在一個(gè)叫 libffi的庫(kù)上面抛寝,libffi是一個(gè)用于高級(jí)語(yǔ)言之間的相互調(diào)用的處理的庫(kù)熊杨。于是 pip install libffi-devel
,然后pip install scrapy
盗舰,成功晶府!問(wèn)題應(yīng)該是編譯cffi的時(shí)候少了libffi庫(kù)!
問(wèn)題因環(huán)境和操作而異钻趋,但是我覺(jué)得centos上安裝scrapy的絕大多數(shù)問(wèn)題都是包和庫(kù)依賴(lài)性的問(wèn)題川陆,多看看其他人的解決方法、多試試就肯定能解決的蛮位。