11.1 标准库的调用与第三方库的安装

11.1 标准库的调用与第三方库的安装

在对Python有所了解后,你可能会常常听到模块、库这两个词和Python一起出现。模块是Python之所以强大的重要因素。打个比方来说,Python的模块有些像PowerPoint中的模版,调用模块就有些像平常说的“套模版”,我们从大量的“模版”中选择出适合当前需求的语句块来快速实现某种功能,从而避免每个使用者都从零开始编写代码。因此,模块(module)是Python中已有的、逻辑地组织成的代码。将相关代码组织到一个模块中可以使代码更容易被理解和使用。模块是一种Python对象,它可以封装和引用。库(library)是相关功能模块的集合。因为我们不是专业的程序开发者,而是基于信息搜集需求的使用者,所以在本章我们将学习的是如何使用库来帮助我们获取网络资源。

与微软在PowerPoint中预设了一些模版相同,Python本身也已“预设”了很多常用的库以满足用户的日常工作需求,它们被称为标准库。但与PowerPoint中模板的所见即所得不同,Python的标准库需要我们通过命令语句才能调用。

11.1.1 如何在Python中导入标准库?

我们可以使用“import关键字”来将一个库导入Python的交互式解释器中。虽然有时我们可能只需要使用到一个模块中的一小部分特定功能(稍后会介绍),但通常我们会选择导入整个库来得到所需的内容。例如,当我们需要使用日期和时间时,其实并不需要导入每个Python模块,也不需要每次导入一个可能被使用的方法(模块内的函数)和对象,只需要导入整个库就可以得到许多处理日期和时间的便捷功能,比如datetime库。再如,在日常生活中我们常常会遇到数学运算,如果想通过Python来快速获得答案,只需要导入一个名叫math的库就可以了。

具体导入标准库的语法很简单——import 库名,以math模块为例:

import math

写完这一行,math库就被导入到Python中以供用户具体调用了。我们可以通过Python的内置函数dir()和help()来了解库的具体信息。但需要注意的是应先导入库,再使用dir()和help()。如果在导入math模块之前就尝试通过dir(math)或help(math)来获取信息,将会被Python报错,这是因为在当下环境中math库还没有被导入。因此需要先导入再调用,程序才能运行。

当导入完成后就可以调用math里的具体运算功能了,如正弦、余弦、正切运算等。上一章中已经提到,在Python中能够实现特定功能的东西被称为函数,为了加以区分,我们将模块中实现功能的东西称为方法。方法调用的语法和函数近似,但需要“告诉”Python所调用的这个方法是导入模块下的“函数”,而不是Python内置的。比如当我们需要使用正弦函数sin()时,需要写做math.sin(),即采用<a>.<b>()编码风格:

import math

sin90=math.sin(math.pi/2)#计算sin(pi/2)

通过上面例子我们可以归纳出在Python中导入模块并引用相关模块功能的语法是:

import <库名>

<库名>.<方法名>(<方法参数>)

如果实际运算中,只需要用到pi值,而不需要用到三角函数或其他任何东西,我们也可以通过from…import…来指定导入的内容:

from math import pi

这样在之后的调用中,就不需要写成math.pi,而是可以直接写pi了。如果需要使用的不仅有pi还有平方根(sqrt)运算,可以通过逗号依次将两者都导入并加以使用:

from math import pi,sqrt

print(sqrt(pi))

但若通过第一种方法直接导入math库,则上面的例子会被写为:

import math

print(math.sqrt(math.pi))

也许你还见过这样导入库的写法:from <库名> import *。这种写法可以在调用相关方法时省略写入库名,如:

import math as *

print(sqrt(pi))

print(sin(90))

略加比较上面导入、调用库的方式,不难发现它们各自的问题。使用第一种方式导入,在调用时会反复输入库名,如math.sin()、math.cos()、mth.tan()等。第二种方式只能局限在指定方法上。第三种方式简化了输入,但存在省略后的方法名与Python原有的函数名称产生重复的可能并影响调用。因此就有了第四种导入方法,使用import和as保留字共同完成:import <库名> as <库别名>。通过给库名起一个更加简洁、实用的别名,在调用时就可以写做:<库别名>.<方法名>(<参数>)。依旧以math库为例:

import math as m

print(m.sqrt(m.pi))

print(m.sin(90))

下面我们以作图模块turtle库(海龟库)为例,写出不同导入、调用的方法,以供大家比较。

图11-1 导入比较

11.1.2 如何在Python中安装第三方库?

Python不仅有着丰富的标准库,全世界大量的程序使用者和开发者还根据自身使用需求制作并共享了大量的第三方库。之后要介绍的网页内容抓取就用到了第三方库。使用第三方库和使用标准库的方法略有不同,两者间的区别在于第三方库没有被预先放置在Python中,需要自行下载安装。因此我们首先要了解如何安装第三方库。

在Windows系统下,第三方库的安装方式有两种:

第一种:使用 pip 命令行工具在线下载你需要的第三方库。

第二种:手动下载第三方库,再使用 pip 命令进行安装。

那么什么是pip呢?pip是Python的软件包管理系统,它是Python语言自带的命令行工具,它可以安装和管理第三方软件包。使用 pip 工具进行软件包安装的命令是:

pip install 库名

接下来以抓取(请求)网页内容所需的第三方库requests为例,和大家一起进行安装并解决安装过程中可能遇到的问题。

打开Windows命令提示符窗口(如图11-2所示),也可以通过使用快捷键打开cmd,即同时按下Windows键+R键,系统会打开“运行”窗口,在该窗口中输入cmd并按回车,即可打开cmd窗口。

图11-2 命令提示符位置

接着在命令行窗口中执行以下命令:pip install requests(图11-3)

图11-3 requests库安装

当命令提示符窗口出现如图11-3所示内容时,标志着requests库已经在计算机里下载并安装完成。但实际情况是,当我们第一次尝试安装第三方库时,往往会遇到cmd提示“Python is not recognized as an internal or external command(Python不被识别为内部或外部命令)”,这时我们需要通过修改系统环境变量的方法加以解决:

(1)找到Python安装路径,并找到script文件夹,复制script路径;

(2)返回桌面,通过鼠标右键依序点击计算机进入系统/高级/环境变量,找到Path并将复制得到的路径添加进去。

关于这一过程的说明网上资源丰富,大家可以自行搜索解决。但更好的方法是在安装Python时,注意页面提示,在安装页面的底部有一个复选框:Add Python 3.X to PATH,将其勾选就能够解决上述问题(图11-4)。

图11-4 安装页面PATH复选框

(http://www.lfd.uci.edu/~gohlke/pythonlibs/)

在实际操作中由于网络通信的原因,有时无法直接实现从网上下载并安装第三方库。那么就需要先手动下载,再使用 pip 命令进行本地安装。加州大学的老师在网上创建并共享了一个非官方的却包罗万象的Python第三方库集合,我们可以在那里通过库名检索所需的模块并进行下载。

下载之后,请复制下载文件所在位置的完整路径(包含文件全名),进入命令提示窗口并输入:

pip install 完整路径

如果你使用的是苹果电脑,Python第三方库的安装过程分为三步,因为苹果在电脑中自带了Python2.7,但我们所需要使用的却是Python3.X,所以在pip过程中会出现一点改动以保证将第三方库顺利安装到Python3中,而非系统自带的Python2中:

1.进入terminal

2.sudo easy_install pip

3.pip3 install requests

(扫码查看视频)

我们可以通过在Python结果窗口输入三行简单的语句,来检测我们是否真地安装成功。其中raise_for_status被用来获取网页的状态码,如果返回结果是200,则表示网页连接正常,可以进行后续操作;若状态码不是200,程序将以HTTP ERROR异常报错。