《Python编程入门》附录 C:常用第三方库与资源

本附录按场景汇总 Python 生态里的常用第三方库:包管理与环境、代码质量、测试、Web 与 API、数据库与 ORM、数据处理、网络与爬虫、命令行、序列化配置、任务队列、可观测性、科学计算、桌面图像、打包发布,每张表给出库、用途、对应章节与实测版本号,并整理学习资源。

Python 生态最让人又爱又怕的一点是:同一个问题往往有五六个成熟的库。本附录不替你决定技术栈,只回答两个问题——「这个库是干什么的」与「什么场景下该选它」,并标出本书对应章节。

表中版本号在写作时通过 PyPI 官方接口实测取得,仅作参考:生态更新很快,请以你安装当天的版本为准。备注 列写的是选型判断依据,不是排名。

附录 C 常用第三方库与资源

包管理与环境

库用途本书实测版本
pip官方包安装器2.126.2.1
venv标准库自带的虚拟环境2.1标准库
uvRust 编写的极快包 / 环境管理器15.10.12.24
pipx把 CLI 工具装进隔离环境2.11.17.12
poetry依赖解析 + 打包一体化15.12.5.1
pdm遵循 PEP 582 / 锁文件的工作流15.32.29.2
virtualenvvenv 的增强替代2.121.14.6

选型判断:只想装包就用 pip;想要极致速度与锁文件用 uv;需要一套完整发布流水线用 poetry。 三者不互斥,很多团队用 uv 装依赖、用 build 出包。

代码质量

库用途本书实测版本
ruff极快的 lint + 格式化,可替代多款工具14.30.16.10
black无配置的意见化格式化器14.326.10.0
mypy静态类型检查器(参考实现)9.12.4.0
pyright微软的类型检查器,速度更快9.11.1.414
pylint老牌全功能 lint14.34.1.2
isort导入语句排序14.39.0.2
bandit安全漏洞扫描14.31.9.4

关键区分:类型检查(mypy / pyright)与 lint(ruff / pylint)是两件事,前者管类型正确性,后者管风格与潜在缺陷,CI 里应各跑一次。新项目直接用 ruff 取代 flake8 + isort + black 的组合,一个工具一条命令。

测试

库用途本书实测版本
pytest事实标准测试框架14.19.1.1
pytest-cov覆盖率统计14.37.1.0
pytest-xdist并行执行测试14.33.8.0
hypothesis基于属性的测试,自动造用例14.26.168.5
coverage底层覆盖率引擎14.37.16.2
faker生成假数据14.240.41.0
freezegun冻结时间便于测试14.21.5.5
responses / respx拦截 HTTP 请求返回桩数据14.20.26.3 / 0.23.1

选型判断:pytest 几乎是默认答案,unittest 只在需要零依赖或对接既有测试集时用。hypothesis 的价值在于「你想不到的边界」——手写用例永远覆盖不全。

Web 与 API

库用途本书实测版本
fastapi带类型校验的现代 API 框架16.20.143.0
uvicornASGI 服务器16.20.54.0
starlette轻量 ASGI 框架(FastAPI 底座)16.11.7.0
flask极简 WSGI 框架16.13.1.3
django全栈框架,自带 ORM 与后台16.16.1.2
litestar性能优先的 ASGI 框架16.12.24.0
gunicornWSGI 进程管理器16.126.2.0
httpx支持同步 / 异步的 HTTP 客户端12.30.28.1
requests最流行的同步 HTTP 客户端12.32.34.2

选型判断:API 服务优先 fastapi(类型驱动、自动文档);需要完整后台与自带 ORM 选 django;只要一层薄路由用 flask。 客户端里 requests 简单够用,一旦要并发或异步就换 httpx。

数据库与 ORM

库用途本书实测版本
sqlalchemy事实标准的 ORM 与 SQL 工具包16.32.1.4
alembic数据库迁移(配合 SQLAlchemy)16.31.20.0
psycopgPostgreSQL 驱动(3.x 版)16.33.3.6
asyncpgPostgreSQL 异步驱动,速度优先16.30.32.0
redisRedis 客户端16.38.1.0
pymongoMongoDB 官方驱动—4.18.3

选型判断:要 ORM 又要能写裸 SQL,选 SQLAlchemy;只操作 Redis / Mongo 这类非关系库,直接用官方驱动即可,不必套 ORM。

数据处理

库用途本书实测版本
pandas表格数据分析的老牌选择17.33.0.6
polarsRust 编写、惰性求值的列式引擎17.32.0.0
numpy多维数组与数值计算底座17.32.5.3
pyarrow列式内存格式与 Parquet 读写17.325.0.1
duckdb进程内 OLAP 数据库,可直接查 Parquet17.31.5.6

选型判断:生态与教程最多的是 pandas;数据量大、追求吞吐与内存效率选 polars;介于两者之间的分析型查询交给 duckdb。 三者都建立在 numpy 之上,pyarrow 是它们交换数据的公共格式。

网络与爬虫

库用途本书实测版本
beautifulsoup4HTML / XML 解析,容错性强17.24.15.0
lxml高性能 XML / HTML 解析17.26.1.3
scrapy完整爬虫框架(调度、去重、管道)17.22.19.0
selenium驱动真实浏览器17.24.50.0
playwright现代浏览器自动化,自带等待17.21.63.0
aiohttp异步 HTTP 客户端 / 服务端13.33.14.4

选型判断:静态页面用 requests + beautifulsoup4 足够;需要 JavaScript 渲染才上 playwright / selenium;大规模抓取才值得引入 scrapy。 任何爬虫都要先确认目标站点的 robots 与条款,见 17.2 。

命令行与终端

库用途本书实测版本
typer基于类型注解构建 CLI11.30.27.3
click组合式 CLI 框架(Typer 底座)11.38.5.0
rich终端富文本、表格、进度条11.315.0.0
tqdm一行代码加进度条17.14.70.1
questionary交互式提示(选择、确认)11.32.1.1

选型判断:简单参数用标准库 argparse;要好看、要子命令、要类型驱动就用 typer。 进度反馈用 tqdm,复杂终端 UI 用 rich。

序列化与配置

库用途本书实测版本
pydantic数据校验与设置管理9.32.14.0
pydantic-settings从环境变量加载配置9.32.15.0
orjson极快的 JSON 库10.33.13.0
msgspec高性能序列化 + 校验10.30.22.0
pyyamlYAML 读写10.36.0.3
tomli-wTOML 写入(标准库只读)10.31.2.0
python-dotenv加载 .env 文件9.31.2.4

选型判断:配置校验首选 pydantic,它与 FastAPI 天然一体。序列化上,json 标准库够用,只有在性能敏感(大响应、高频调用)时才换 orjson / msgspec。

任务队列与调度

库用途本书实测版本
celery分布式任务队列,功能最全18.35.6.3
rq基于 Redis 的轻量任务队列18.32.12.0
dramatiq简洁的任务队列,中间件可插拔18.32.2.1
apscheduler进程内定时任务调度18.33.11.3

选型判断:任务量小、只要定时执行用 apscheduler;需要跨机器分发与重试用 celery;想少配置用 rq。 引入队列意味着同时引入消息中间件与运维成本,别为单机任务上这套。

可观测性

库用途本书实测版本
structlog结构化日志11.226.1.0
loguru开箱即用的日志体验11.20.7.3
opentelemetry-api分布式追踪与指标标准11.21.45.1
sentry-sdk异常采集与告警11.22.71.0
prometheus-client暴露指标供抓取11.20.26.0

选型判断:标准库 logging 已经够用,需要机器可读的结构化输出再用 structlog;只想少写配置就用 loguru。生产环境的错误聚合交给 sentry-sdk,指标交给 prometheus-client。

科学计算与机器学习

库用途本书实测版本
scipy科学计算算法库17.31.18.1
scikit-learn经典机器学习算法17.31.9.1
torch深度学习框架(PyTorch)—2.14.1
tensorflow深度学习框架(TF)—2.21.0
matplotlib基础绘图库17.33.11.2
seaborn基于 matplotlib 的统计可视化17.30.13.2
jupyterlab交互式笔记本环境17.34.6.4

选型判断:经典机器学习(特征工程 + 树模型 / 线性模型)用 scikit-learn;深度神经网络在 torch 与 tensorflow 之间选——研究社区更偏前者。 画图先用 matplotlib 打底,统计图再上 seaborn。

桌面、图像与办公

库用途本书实测版本
pillow图像打开、转换、缩放17.112.3.0
openpyxl读写 Excel .xlsx17.13.1.5
pyautogui模拟鼠标键盘17.10.9.54
pyqt6Qt 桌面 GUI(GPL / 商业)—6.11.0
pyside6Qt 官方 Python 绑定(LGPL)—6.12.0
opencv-python计算机视觉与图像处理—5.0.0.93

选型判断:图像批处理用 pillow;桌面 GUI 想省心授权用 pyside6,想用最新特性用 pyqt6;计算机视觉上 opencv-python。 本书的办公自动化场景见 17.1 。

打包与发布

库用途本书实测版本
build按 PEP 517 构建发行包15.21.6.1
twine上传包到 PyPI15.27.0.0
hatchling现代构建后端15.21.32.4
setuptools传统构建后端15.284.0.0
cibuildwheel在 CI 里构建多平台 wheel15.34.3.0
pyinstaller打包成单文件可执行程序15.26.22.3
nuitka把 Python 编译成 C,产物更小更快15.24.2.2

选型判断:发布到 PyPI 用 build + twine,构建后端新项目选 hatchling;要发二进制可执行文件,pyinstaller 上手快,nuitka 产物体积与启动速度更优但构建更慢。 完整流程见 15.2 。

学习资源

资源按用途分四类,比按形式分更有用:

资源类型具体去处什么时候用
官方文档docs.python.org/3/ 的标准库与语言参考查某个 API 的确切行为与边界
版本说明docs.python.org/3/whatsnew/ 的 What’s New升级前确认破坏性变更与新特性
设计依据PEP 索引 peps.python.org想知道「为什么这样设计」时读原始提案
风格规范PEP 8 风格指南、PEP 257 文档字符串团队协作前统一写法
下载安装python.org/downloads/获取各平台安装包与版本历史
社区问答Stack Overflow、r/learnpython、官方 Discourse具体报错与踩坑,搜关键词往往已有答案

使用建议:官方文档当字典查,PEP 当设计文档读,What’s New 当升级清单用,社区问答当排错入口。 尤其不要只靠碎片化教程学语言——标准库参考才是权威。

一个常见误区是把「教程」和「参考」混用:教程告诉你「怎么起步」,参考告诉你「这个参数到底接受什么」。查 API 一律以官方参考为准。

小结

  • 第三方库的选型没有普适最优解,判断依据是「部署环境、团队规模、性能要求」这三件事,而不是「哪个 star 多」。
  • 装依赖、做类型检查、跑测试、发包这四件事,每个类别都已形成事实标准,跟随主流比自创方案省心。
  • 类型检查(mypy / pyright)与 lint(ruff)职责不同,CI 里必须各跑一次,缺一不可。
  • 序列化与配置以 pydantic 为核心;只在性能敏感处才替换标准库的 json。
  • 学习资源要按用途分工:官方文档当字典、PEP 当设计文档、What’s New 当升级清单、社区问答当排错入口。
  • 引入任何第三方库前先问一句:标准库(见附录 B)能不能直接干这件事?

继续阅读

探索更多技术文章

浏览归档,发现更多关于系统设计、工具链和工程实践的内容。

全部文章 返回首页

「python」更多文章

  1. 《Python高级编程》目录
  2. 《Python高级编程》11.3 PEP 流程与版本迁移策略
  3. 《Python高级编程》11.2 嵌入式与自由线程运行时