20 Python 中的常用第三方模块

优质
小牛编辑
121浏览
2023-12-01

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 其它常用的模块

模块名功能
urllib3Python HTTP库,安全连接池、支持文件post
RoboBrowser无需独立的浏览器即可浏览网页
MechanicalSoup一个与网站自动交互 Python 库
mechanize有状态、可编程的 Web 浏览库
hyperPython的HTTP/2客户端
grab网络爬虫框架(基于pycurl/multicur)
scrapy网络爬虫框架(基于twisted)架
selenium用于Web应用程序测试的工具
jieba中文分词工具
OpenCV开源计算机视觉库
SimpleCV用于照相机、图像处理、特征提取、格式转换