在 Python 的生态系统中,如果仅有官方认定的标准库,还不能说它是一个开放系统。开放系统的重要特征是每个开发者都有权编辑和发布模块(或包),人人能够为这个系统增砖添瓦。因此就有了标准库之外的模块(或包),统称为“第三方包”。
Python 第三方包都会在指定网站 https://pypi.org/ 上发布,图11-4-1为网站首页截图,从中可以看到当前网站的项目数量(读者阅读本书时,此数量会有所不同。在第1章1.4节也提到了 PyPI 网站,编写那部分内容时对网站的截图如第1章1.4节的图1-4-3所示,图中所显示的项目数量与图11-4-1所示不同,这两张截图的时间间隔大约半年左右,由此读者可以体会到 Python 生态体系的快速发展之势)。

图11-4-1 PyPI 首页截图
标准库的模块不需要单独安装,第三方包则要在用到时单独安装到本地计算机。本书推荐使用 pip 安装。
pip 是 Python 的包管理工具,一般在安装 Python 的时候,它已经被安装到本地了。可以用下面的方式检查本地是否已经安装(注意,在命令行中执行如下操作):
% pip --version
pip 21.1.3 from /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip (python 3.9)
返回结果中显示了当前所安装的 pip 版本(读者在本地计算机上所安装的可能与此不同)以及所在的位置——第三方包都会安装在 ./site-packages 目录内。
如果本地没有安装 pip 包管理工具,可以选择如下两种方式中的一种进行安装:
方式一:使用标准库的 ensurepip 模块安装。
% python -m ensurepip
还可以用这个模块对 pip 升级。
% python -m ensurepip --upgrade
方式二:下载安装脚本文件 get-pip.py (下载地址:https://bootstrap.pypa.io/get-pip.py),然后在终端运行此文件安装:
% python get-pip.py
pip 安装好之后,就可以用它管理本地的第三方包,比如安装、卸载等操作。
在安装某个第三方包之前,特别建议先到 PyPI 官方网站找到该包,了解其基本情况,特别是它能支持的 Python 版本,以及最新版本的发布时间。例如 requests 包(提醒:要非常认真地在搜索结果中观察名称,避免“李鬼”冒充“李逵”),在 PyPI 上显示了如图11-4-2所示的内容。

图11-4-2 requests 包页面部分截图
从图11-4-2所示的截图中,可以得到如下基本信息(读者阅读本书时,此页面的信息会有所不同)
pip install requests (顶部所示),也可以用 python -m pip install requests (截图底部所示).whl 文件和 .tar.gz 文件。从安装的角度来看,可以用以下三种安装方法安装 requests 包:
pip 指令安装,这是最常用的安装方法。% pip install requests
特别注意——很多初学者容易犯的错误——不要在 Python 交互模式中执行此指令(如下操作所示),这不是 Python 语言的语句。
>>> pip install requests
File "<stdin>", line 1
pip install requests
^
SyntaxError: invalid syntax
如果你确信本地已经安装了 pip ,但是用上面正确的方式安装,仍然提示找不到 pip ——特别是使用 Windows 操作系统的读者,可能是因为没有将 pip 命令纳入系统环境变量,解决方法之一就是将它加入到环境变量。还有另外一种可以尝试方法:
% python -m pip install requests
这两种方法没有本质的区别。如果 pip 没有在本地计算机的系统环境变量中,使用后者可以让 Python 解释器自动在 sys.path 的路径范围内查找 pip 模块,并执行安装。
用上面的方式安装,其实是要从 PyPI 的服务器上下载有关程序,但有时因为不可抗力,访问该服务器会出现连接超时等某些问题。对此,也是为了服务国内用户,有不少机构做了 PyPI 的国内镜像(或国内源),比如清华大学开源软件镜像站的 PyPI 地址是:https://mirrors.tuna.tsinghua.edu.cn/help/pypi/ (如图11-4-3所示),读者可以根据说明使用该网站的进行安装。

图11-4-3 PyPI 镜像使用方法
有的情况下,因为特殊需要,不一定要安装模块的最新版本,比如要安装 requests 2.25.0 :
% pip install requests == 2.25.0
在图11-4-2所示页面中点击导航(Navigation)的 Download files ,可以看到图11-4-4所示的分发文件,将它们下载到本地。

图11-4-4 下载分发文件
然后进入下载的文件所在的目录,并执行:
% ls *.whl
requests-2.26.0-py2.py3-none-any.whl
% pip install requests-2.26.0-py2.py3-none-any.whl
Processing ./requests-2.26.0-py2.py3-none-any.whl
Requirement already satisfied: urllib3<1.27,>=1.21.1 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests==2.26.0) (1.26.5)
Requirement already satisfied: certifi>=2017.4.17 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests==2.26.0) (2021.5.30)
Requirement already satisfied: charset-normalizer~=2.0.0 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests==2.26.0) (2.0.3)
Requirement already satisfied: idna<4,>=2.5 in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (from requests==2.26.0) (2.10)
Installing collected packages: requests
Successfully installed requests-2.26.0
如此就成功地安装了。如果下载的是 requests-2.26.0.tar.gz 文件,安装方法亦类似:
% pip install requests-2.26.0.tar.gz
首先,本地要已经安装了 git (对 git 的介绍超出本书范畴,请读者自行查找有关资料)。仍然以 requests 模块为例,它在 github.com 网站的仓库地址是:https://github.com/psf/requests.git 。
% pip install git+https://github.com/psf/requests.git
如此即可使用 requests 源码仓库进行安装。另外,还可以将源码克隆(clone)到本地,然后通过执行其中的 setup.py 程序进行安装(参阅11.4.2节)。
在上述各个方法中,最常用的还是第一种。安装好之后,可以执行以下操作,查看安装结果。
% pip show requests
Name: requests
Version: 2.26.0
Summary: Python HTTP for Humans.
Home-page: https://requests.readthedocs.io
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages
Requires: urllib3, certifi, charset-normalizer, idna
Required-by: translate
这里显示了 requests 模块的有关信息,特别要关注 Location 一项,显示了此模块安装在本地的目录。
如果已经安装的包或模块需要升级,也可以用 pip 轻松实现,例如对 requests 升级:
% pip install --upgrade requests
由于 pip 本身也在不断地维护发展,所以用它安装第三方包的时候,如果当前所使用的 pip 版本低于最新发布版,会提示对 pip 升级,可以这样完成升级:
% pip install --upgrade pip
Requirement already satisfied: pip in /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages (21.1.3)
Collecting pip
Downloading pip-21.2.1-py3-none-any.whl (1.6 MB)
|████████████████████████████████| 1.6 MB 612 kB/s
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 21.1.3
Uninstalling pip-21.1.3:
Successfully uninstalled pip-21.1.3
Successfully installed pip-21.2.1
现在就将 pip 从 21.1.3 升级到了 21.2.1 。
% pip --version
pip 21.2.1 from /Library/Frameworks/Python.framework/Versions/3.9/lib/python3.9/site-packages/pip (python 3.9)
有的第三方包或者模块需要卸载,其指令如下(以卸载 requests 模块为例):
% pip uninstall requests
会提示是否需要卸载此模块,输入 y 则卸载。如果确定无疑要卸载,还可以用:
% pip uninstall requests -y
以上介绍了用 pip 管理本地第三方包和模块的常用操作,此外,pip 还有其他一些命令,读者可以通过官方文档(https://pip.pypa.io/en/stable/cli/pip_list/)了解,以备不时之需。
当第三方包或模块被安装到本地之后,其使用方法与标准库中的模块使用方法一样,请参阅11.3节,不再赘述。