本文为译文,原文见地址:https://docs.scrapy.org/en/latest/intro/install.html
安装向导
安装Scrapy
Scrapy可以运行在Python2.7版本和Python3.4或者及其以上版本。
如果你正在使用Anaconda或者Miniconda,你可以从conda-forge通道来安装这个包,该通道具有Linux、Windows和OS X平台下最新的包。
使用conda安装Scrapy,运行如下命令:
conda install -c conda-forge scrapy
或者,如果你已经熟悉Python包的安装,可以从Pypi安装Scrapy及其依赖项:
pip install Scrapy
需要注意的是,有时候这可能需要根据你的操作系统解决一些依赖项的编译问题,因此请务必检查[特定于平台的安装说明](file:///F:/book/scrapy_1.5%E5%AE%98%E7%BD%91html/scrapy-latest/index.html#intro-install-platform-notes)。
我们能强烈推荐你在[专用的虚拟环境](file:///F:/book/scrapy_1.5%E5%AE%98%E7%BD%91html/scrapy-latest/index.html#intro-using-virtualenv)中安装Scrapy,这样可以避免与你系统中的包相冲突。
需要知道的事
Scrapy使用纯Python编写的,并且它依赖了一些Python包:
- lxml,一个高效的XML和HTML解析器
- parsel,一个依赖于lxml编写的HTML/XML数据提取库
- w3lib,用于处理URL和web页面编码的多用途辅助程序
- twisted,一个异步网络框架
- cryptography和pyOpenSSL,用来处理各种网络级安全的需求
Scrapy所需依赖包的最低版本:
- Twisted 14.0
- lxml 3.4
- pyOpenSSL 0.14
Scrapy可以使用这些包的旧版本,但不能保证它会继续工作,因为它没有针对这些包进行测试。
其中一些包本身依赖于非Python包,这些包可能需要额外的安装步骤。如果遇到与这些依赖项有关的问题,请参阅它们各自的安装说明:
使用虚拟环境(强烈推荐)
我们建议在平台的虚拟环境中安装Scrapy。
Python包可以全局安装,或者安装在用户空间中。我们不建议在整个系统范围内安装Scrapy。
相反,我们推荐在虚拟环境(virtualenv)中安装Scrapy。virtualenv允许你不与已经安装的Python系统包发生冲突(这会破坏一些系统工具和脚本),并且仍然可以正常地使用pip安装包(没有sudo等)。
为了使用虚拟环境,请参阅virtualenv安装说明。这里使用全局安装:
$ [sudo] pip install virtualenv
你可以查看这里的用户指南,了解如何创建你的virtualenv。
注意:如果你使用Linux或者OS X,virtualenvwrapper是一个创建virtualenv的快捷工具。
一旦创建了virtualenv,就可以使用pip在其中安装Scrapy,就像任何其他Python包一样(请参阅下面特定于平台的指南,了解可能需要预先安装的非Python依赖项)。
Python virtualenv可以使用Python2安装,也可以使用Python3安装。
- 如果你希望使用Python3安装Scrapy,则使用Python3 virtualenv安装Scrapy。
- 如果你希望使用Python2安装Scrapy,则使用Python2 virtualenv安装Scrapy。
特定平台安装说明
Windows
虽然可以使用pip在Windows上安装Scrapy,但我们建议你安装Anaconda或Miniconda,并使用来自conda-forge通道的包,这样可以避免大多数安装问题。
一旦你已经安装了Anaconda或Miniconda,你可以使用下面的命令安装Scrapy:
conda install -c conda-forge scrapy
Ubuntu14.04及其更高版本
Scrapy目前使用足够多的lxml、twisted和pyOpenSSL版本进行了测试,并与最近的Ubuntu发行版兼容。但它也应该支持老版本的Ubuntu,比如Ubuntu14.04,尽管TLS连接可能存在问题。
不要使用Ubuntu提供的python-scrapy包,它们通常太久,跟不上最新的Scrapy。
为了在Ubuntu(或者基于Ubuntu的)系统上安装Scrapy,你需要安装这些依赖项:
sudo apt-get install python-dev python-pip libxml2-dev libxslt1-dev zlib1g-dev libffi-dev libssl-dev
- python-dev,zlib1g-dev,libxml2-dev和libxslt1-dev均需要lxml
- libssl-dev和libffi-dev均需要cryptography
如果你希望在Python3上安装Scrapy,命令如下:
sudo apt-get install python3 python3-dev
在virtualenv中,你可以在上述命令后使用pip来安装Scrapy:
pip install scrapy
Mac OS X
构建Scrapy的依赖关系需要有一个C编译器和开发头文件。在OS X上,这通常是由苹果的Xcode开发工具提供的。要安装Xcode命令行工具,请打开终端窗口并运行:
xcode-select --install
这里有一个已知的问题阻止了pip更新系统包。要成功安装Scrapy及其依赖项,必须解决这个问题。以下是一些建议的解决方案:
-
(推荐)不要使用系统自带的Python,安装一个新的、更新的版本,它不会与系统的其他部分冲突。下面是如何使用homebrew程序包管理器:
- 按照https://brew.sh/中的说明安装homebrew
- 更新PATH变量,说明应该在系统包之前使用homebrew包(如果使用zsh作为默认shell,则将.bashrc改为.zshrc):
echo “export PATH=/usr/local/bin:/usr/local/sbin:$PATH” >> ~/.bashrc
- 重载.bashrc以确保已经进行了更改:
source ~/.bashrc
- 安装python:
brew install python
- Python的最新版本附带了pip,所以你不需要单独安装它。如果不是这样,则升级Python:
brew update; brew upgrade python
-
(可选)在隔离的Python环境中安装Scrapy。
此方法是针对上述OS X问题的解决方案,但它是管理依赖关系的总体良好实践,可以补充第一个方法。
你可以使用virtualenv在Python中创建虚拟环境。我们推荐阅读http://docs.python-guide.org/en/latest/dev/virtualenvs/教程。
在这些工作结束后,你应该能够安装Scrapy了:
pip install Scrapy
PyPy
我们建议使用最新的PyPy版本。测试的版本是5.9.0。对于PyPy3,只测试了Linux安装。
对于CPython而言,大多数依赖于Scrapy的类现在都有了二进制轮(后缀为whl的安装包),但是对于PyPy没有。这意味着这些依赖项将在安装期间构建。在OS X上,你可能会遇到构建Cryptography依赖的问题,这里描述了这个问题的解决方案,即使用brew install openssl,然后导出该命令建议的标志(仅在安装Scrapy时需要)。在Linux上安装除了安装构建依赖之外,没有其他特殊问题。在Windows上安装PyPy的Scrapy是没有经过测试的。
通过运行scrapy bench,你可以检查Scrapy是否正确安装了。如果该命令给出了诸如TypeError: … got 2 unexpected keyword arguments的错误,这意味着setuptools无法获得一个特定于PyPy的依赖项。为了修复这个问题,请运行pip install ‘PyPyDispatcher>=2.1.0’。