20 Python 中的常用第三方模块
Python 的标准库是随着 Pyhon 安装的时候默认自带的库,提供了有文本处理、系统管理、网络处理等功能。Python 的第三方库,是由各家厂商和 Python 爱好者开发的库,第三方库需要下载后安装到 Python 的安装目录下。
有一句话:“人生苦短,我用Python”。使用 Python 可以节省开发时间,原因在于: Python 有丰富且易用的第三方模块。使用第三方模块省去了大量重复造轮子的时间,节约了众多开发者的生命。所以现如今Python这么火,大行其道,也是有其原因的。
网站 https://pypi.org 汇聚了所有的第三方模块的信息,通过该网站可以查找和下载第三方模块,输入第三方模块的名字可以查询到该模块的信息,如下图所示:
1. pip 的使用
1.1 pip 简介
pip 是 Python 包管理工具,该工具提供了对 Python 包的查找、下载、安装、卸载的功能。
Python 3.4+ 以上版本自带 pip 工具,如果在 python.org 下载最新版本的安装包,则已经自带了该工具。使用命令 pip --version 检查是否已经安装了 pip,如下所示:
C:> pip --version
pip 9.0.1 from C:Python3libsite-packages (python 3.6)
1.2 列出已经安装的包
命令 pip list 列出所有已经安装的包,示例如下:
C:> pip list
certifi (2020.4.5.1)
chardet (3.0.4)
idna (2.9)
numpy (1.18.4)
pip (9.0.1)
pygame (1.9.4)
requests (2.23.0)
setuptools (28.8.0)
urllib3 (1.25.9)
pip list 输出了已经安装的包的名称和版本。
1.3 搜索第三方包
命令 pip search package-name 在 pypi.org 上根据 package-name 搜索第三方包。
输出所有包含有关键字 requests 的第三方模块,并给出模块的功能简介,示例如下:
C:> pip search requests
requests-auth (5.1.0) - Authentication for Requests
pydantic-requests (0.1.3) - A pydantic integration with requests.
Requests-OpenTracing (0.2.0) - OpenTracing support for Requests
yamlsettings-requests (1.0.0) - YamlSettings Request Extension
requests-aws4auth (0.9) - AWS4 authentication for Requests
pycopy-requests (0.0.0) - Dummy requests module for Pycopy
jupyter-requests (0.0.3) - Send requests to a Jupyter server.
requests-middleware (0.1.2) - Composable HTTP middleware for requests
...
1.4 安装包
命令 pip install package-name 安装名称为 package-name 的第三方模块。命令 pip install 从网站 pypi.org 下载指定名称的第三方模块然后自动安装,非常方便。
安装名为 django 的第三方模块,示例如下:
C:>pip install django
Collecting django
Downloading https://files.pythonhosted.org/packages/9d/04/04abb097c84c770180ee
ebe7ed920ce42f9917ab5ad4de01ff8ed11bc25b/Django-3.0.6-py3-none-any.whl (7.5MB)
34% |███████████▏ | 2.6MB 144kB/s eta 0:00:34
34% |███████████▏ | 2.6MB 108kB/s eta 0:00:45
35% |███████████▏ | 2.6MB 108kB/s eta 0:00:45
...
1.5 升级包
命令 pip install --upgrade package-name 升级名称为 package-name 的第三方模块。命令 从网站 pypi.org 下载指定名称的第三方模块的最新版本,然后自动安装升级。
升级名为 requests 的第三方模块,示例如下:
C:>pip install --upgrade requests
Requirement already up-to-date: requests in c:python3libsite-packages
Requirement already up-to-date: certifi>=2017.4.17 in c:python3libsite-pac
kages (from requests)
Requirement already up-to-date: idna<3,>=2.5 in c:python3libsite-packages
(from requests)
Requirement already up-to-date: chardet<4,>=3.0.2 in c:python3libsite-pack
ages (from requests)
Requirement already up-to-date: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in d:ad
donpy36libsite-packages (from requests)
1.6 卸载包
命令 pip uninstall package-name 卸载名称为 package-name 的第三方模块。卸载 requests 模块,示例如下:
C:>pip uninstall requests
Uninstalling requests-2.23.0:
c:python3libsite-packagesrequests-2.23.0.dist-infoinstaller
c:python3libsite-packagesrequests-2.23.0.dist-infolicense
c:python3libsite-packagesrequests-2.23.0.dist-infometadata
c:python3libsite-packagesrequests-2.23.0.dist-inforecord
c:python3libsite-packagesrequests-2.23.0.dist-infotop_level.txt
c:python3libsite-packagesrequests-2.23.0.dist-infowheel
c:python3libsite-packagesrequests__init__.py
...
Proceed (y/n)? y
Successfully uninstalled requests-2.23.0
卸载 requests 模块时,首先列出该模块相关的文件,在删除这些文件前,程序要求用户输入 y 进行确认。用户输入 y 后,pip 就会卸载该模块。
1.7 显示包的信息
命令 pip show package-name 显示名称为 package-name 的第三方模块的信息,示例如下:
C:> pip show requests
Name: requests
Version: 2.23.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: c:python3libsite-packages
Requires: chardet, idna, certifi, urllib3
在以上信息中,requires 列出 requests 模块的依赖的模块:chardet、idna、certifi、urllib3,当安装 requests 模块时,会自动安装这 4 个模块。
2. 常用的第三方模块
2.1 requests 模块
requests 是一个的简单易用的 http 库,发出 http 请求并获取响应,可以用于抓取网站的页面。
使用 requests.get(url) 方法抓取 baidu 的首页,示例如下:
>>> import requests
>>> response = requests.get('https://www.baidu.com')
>>> response.text
'<!DOCTYPE html>rn<!--STATUS OK--><html> <head><meta http-equiv=content-type c
ontent=text/html;charset=utf-8><meta http-equiv=X-UA-Compatible content=IE=Edge>
<meta content=always name=referrer>
...
- 在第 2 行,使用 requests.get(‘https://www.baidu.com’) 获取 baidu 首页
- 在第 3 行,response.text 是 baidu 首页 html 文件的内容
2.2 numpy 模块
NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy 是一个运行速度非常快的数学库,主要用于科学计算,包含:
- 一个强大的 N 维数组对象 ndarray
- 统计函数
- 线性代数、傅里叶变换、随机数生成
- 矩阵运算
numpy 提供了从数组中查找最小元素,最大元素的功能,示例如下:
>>> import numpy
>>> a = numpy.array([[1,2,3],[4,5,6],[7,8,9]])
>>> numpy.amin(a)
1
>>> numpy.amax(a)
9
- 在第 2 行,创建一个二维数组
- 在第 3 行,函数 amin(a) 返回数组的最小元素
- 在第 5 行,函数 amax(a) 返回数组的最小元素
2.3 pygame 模块
Pygame 是一组用来开发游戏软件的 Python 程序模块,基于 SDL 库的基础上开发。允许你在 Python 程序中创建功能丰富的游戏和多媒体程序,Pygame 是一个高可移植性的模块,可以支持多个操作系统,使用 Pygame 开发的程序可以运行在 windows、linux 和 mac os 上。
使用 pygame 开发了一个围棋的游戏,如下图所示:
2.4 pymysql 模块
pymysql 模块提供了访问 mysql 数据库的功能,包括:
- 获取与数据库的连接
- 执行 SQL 语句并获取执行结果
- 关闭数据库连接
假设存在数据库 QA,查询表 users 的示例如下:
import pymysql
conn = pymysql.connect(host="localhost", user="root", passwd="", db='QA')
cursor = conn.cursor()
cursor.execute("SELECT userId,password FROM users");
rows = cursor.fetchall()
for row in rows:
print(row[0], row[1])
cursor.close()
conn.close()
- 在第 3 行,连接数据库 QA
- 在第 6 行,执行 SQL 语句 SELECT userId,password FROM users
- 在第 7 行,函数 fetchall() 返回 SQL 语句的查询结果
程序输出如下:
张三 ZhangSan
李四 LiSi
王五 WangWu
2.5 其它常用的模块
模块名 | 功能 |
---|---|
urllib3 | Python HTTP库,安全连接池、支持文件post |
RoboBrowser | 无需独立的浏览器即可浏览网页 |
MechanicalSoup | 一个与网站自动交互 Python 库 |
mechanize | 有状态、可编程的 Web 浏览库 |
hyper | Python的HTTP/2客户端 |
grab | 网络爬虫框架(基于pycurl/multicur) |
scrapy | 网络爬虫框架(基于twisted)架 |
selenium | 用于Web应用程序测试的工具 |
jieba | 中文分词工具 |
OpenCV | 开源计算机视觉库 |
SimpleCV | 用于照相机、图像处理、特征提取、格式转换 |