环境:Mac OS X 10.11.6
Python版本:2.7.12
通过pip安装:
sudo pip install Scrapy
出现的问题
报错 six-1.4.1已存在,uninstall six 操作被拒绝,导致安装Scrapy失败。
问题分析
Mac OS 的SIP(System Integrity Protection)服务(默认开启)依赖six包,所以系统拒绝卸载six。
问题解决
如果要卸载six,需要先关闭系统的SIP。关闭方法:重启Mac,期间一直按住 command + r 键,直到屏幕出现了苹果的Logo;然后在菜单栏的“实用工具”中选择终端,打开之;在终端中输入
csrutil disable
回车,返回信息会提示你重启系统以使更改生效,重启系统后,通过
csrutil status
可以看到状态已经是 disable了,说明关闭SIP成功。
接下来,手动卸载six:
sudo rm -rf /Library/Python/2.7/site-packages/six*
sudo rm -rf /System/Library/Frameworks/Python.framework/Versions/2.7/Extras/lib/python/six*
至此,six卸载完成,终于可以使用pip安装Scrapy了:
sudo pip install Scrapy
安装后查看是否安装成功:
scrapy -h
Scrapy 1.2.1 - no active projectUsage: scrapy[options] [args]Available commands: bench Run quick benchmark test commands fetch
Fetch a URL using the Scrapy downloader genspider Generate new spider using pre-defined templates runspider
Run a self-contained spider (without creating a project) settings
Get settings values shell
Interactive scraping console startproject
Create new project version
Print Scrapy version view
Open URL in browser, as seen by Scrapy [ more ]
More commands available when run from project directoryUse "scrapy-h" to see more info about a command
说明已经安装成功。
scrapy模块导入问题
在python中
> import scrapy
出现ImportError: No module named zope.interface的问题
解决方法
安装zope.interface包即可
安装步骤
step1: 先安装setuptools,
下载地址:setuptools 28.8.0 : Python Package Index
在Mac下可以直接使用如下命令安装:
curl https://bootstrap.pypa.io/ez_setup.py -o - | python
step2: 安装 zope.interface:
下载地址:zope.interface 4.3.2 : Python Package Index
我首先尝试的是这个版本:
zope.interface-4.3.2-cp27-cp27m-macosx_10_9_x86_64.whl(md5)
使用如下命令安装(先进入安装文件所在的目录,各种xx.whl表示你的安装文件,如果没有wheel,可以先通过sudo pip install wheel安装):
sudo wheel install xxxx.xxxxx.xxxx.whl
出现提示与当前的Python版本不兼容,于是尝试采用源码安装:
先下载 zope.interface-4.3.2.tar.gz(md5)
然后解压,找到setup.py文件,执行
python setup.py install
即可安装完成。
至此,zope.interface包安装完成。再次在python中导入scrapy,成功。