Python新手必装的10个常用第三方库清单
针对Python新手的实用第三方库清单,涵盖网络请求、网页提取、数据清洗、数值计算、图表绘制、Excel办公、图片处理、终端美化、单元测试与轻量Web等10个基础库,提供规范安装流程、代码示例与认知辨析。
Python 语言自带的标准库能够支撑基础的文件交互、数值运算与基础数据结构操作,但在面对网络数据拉取、结构化数据清洗、多格式文件转换以及自动化验证等高频任务时,原生写法通常冗长且容易出错。掌握高质量的第三方库是初学者从“语法学习”跨越到“实际解决问题”的核心一步。本文梳理了 10 个在开发中最为基础、维护稳定且社区文档完备的常用第三方库,涵盖网络爬取、数据处理、办公图像、工程辅助与轻量 Web 五个场景,并给出规范的隔离安装流程与快速调用示例。
一、规范安装:为什么必须使用虚拟环境
在安装任何第三方库之前,明确包管理工具 pip 与虚拟环境 venv 的工作机制至关重要。很多初学者在刚开始写代码时,习惯直接在操作系统终端中执行 pip install 库名。这种方式会将代码包直接下载到全局 Python 的系统目录中。
全局安装虽然省去了前期的环境配置步骤,但会在后续开发中引发严重问题:当你在电脑上写了多个项目,项目 A 需要使用 Pandas 1.x 版本的旧语法,而项目 B 需要使用 Pandas 2.x 的新特性时,全局目录只能保留一个版本,必然导致其中一个项目无法运行。此外,全局安装的包过多后,极难排查某个报错究竟源自哪一次依赖覆盖。
正确的做法是:为每一个独立的练习或项目创建一个专用的虚拟环境。Python 官方从 3.3 版本起便内置了 venv 模块,无需额外安装即可使用。
虚拟环境标准操作五步法
-
新建并进入项目目录:打开命令行终端,在合适的位置建立工作文件夹:
mkdir demo_project cd demo_project -
创建虚拟环境:使用内置模块生成名为
.venv的独立环境目录:python3 -m venv .venv -
激活虚拟环境:
- macOS / Linux 系统:
source .venv/bin/activate - Windows PowerShell:
.venv\Scripts\Activate.ps1
(.venv)字样。 - macOS / Linux 系统:
-
配置镜像源并安装依赖:国内网络环境下从官方 PyPI 下载包偶尔会超时,推荐设置国内清华镜像源:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip install requests -
导出项目依赖文件:开发完成后,执行以下命令将当前环境安装的库与具体版本记录下来:
当换到另一台机器时,只需执行pip freeze > requirements.txtpip install -r requirements.txt,就能一键还原一模一样的运行环境。
二、10个核心第三方库详解与实用示例
以下 10 个第三方库按照解决问题的类型分为五个模块。每个库均列出其核心定位、解决的原生痛点、极简调用代码与预期示例输出。
(一)网络请求与数据抓取
1. Requests:优雅简洁的 HTTP 客户端
解决痛点:Python 内置了 urllib 模块,但发送带参数、自定义请求头或 JSON 数据的请求时,需要手动编码 URL、处理字节流解码并编写异常分流,代码冗长。Requests 将 HTTP 请求简化为符合直觉的方法调用,自动管理 Keep-Alive、编码推断与会话 Cookie。
import requests
url = "https://api.github.com"
try:
# 发送 GET 请求,设置 5 秒超时时间
response = requests.get(url, timeout=5)
# 若返回 HTTP 4xx 或 5xx 状态码则抛出异常
response.raise_for_status()
# 自动解析返回的 JSON 格式数据
payload = response.json()
print("请求状态码:", response.status_code)
print("API 根节点字段数:", len(payload))
print("用户接口地址示例:", payload.get("user_url"))
except requests.exceptions.RequestException as err:
print("网络请求发生异常:", err)
API 根节点字段数: 32
用户接口地址示例: https://api.github.com/users/{user}
使用提醒:生产环境中调用网络接口务必指定 timeout 参数。若不指定超时,在目标服务器网络阻塞时,程序会处于无限期挂起状态。
2. Beautiful Soup 4 (bs4):DOM 标签提取利器
解决痛点:从网页抓取数据时,如果直接用正则表达式匹配 HTML,一旦网页标签层级调整或属性换行,正则极易失效甚至漏配。Beautiful Soup 4 将 HTML 文本解析为层级分明的树状结构,支持通过标签名、CSS 类名和属性快速提取文本。
from bs4 import BeautifulSoup
html_text = """
Python 语法通识免费
自动化办公实战¥99
"""
# 使用内置 html.parser 解析树结构
soup = BeautifulSoup(html_text, "html.parser")
# 提取所有 class 包含 card 的节点
cards = soup.find_all("div", class_="card")
for item in cards:
title = item.find("span", class_="title").get_text()
price = item.find("span", class_="price").get_text()
print(f"课程:{title} | 价格:{price}")
课程:自动化办公实战 | 价格:¥99
(二)数值计算与结构化数据分析
3. NumPy:高性能多维数组与向量化计算
解决痛点:Python 原生的 list 是通用对象的引用集合,若要对其中百万个数字逐一乘以系数,只能通过 for 循环或列表推导式逐个计算,解释器开销大且运行缓慢。NumPy 提供了底层基于 C 语言的连续内存数组对象 ndarray,支持广播机制与向量化运算,速度相比原生循环有数十倍提升。
import numpy as np
# 创建一维数值数组
sales = np.array([120, 135, 150, 180, 210])
# 向量化运算:所有元素统一上浮 10% 并扣减固定成本 5
revenue = sales * 1.1 - 5
print("调整后产出:", np.round(revenue, 2))
print("均值:", np.mean(revenue))
print("标准差:", np.round(np.std(revenue), 2))
均值: 169.9
标准差: 35.08
4. Pandas:数据表格清洗与多维统计分析
解决痛点:面对带有表头、不同列数据类型(字符、日期、浮点数)的二维表格时,原生字典套列表的方式极难进行“按某列去重”、“空值插补”、“分组求均值”等操作。Pandas 提供的 DataFrame 结构让用户能够像在 SQL 数据库或 Excel 中一样自由切片和聚合数据。
import pandas as pd
raw_data = {
"员工": ["王明", "李静", "张强", "赵雪", "钱伟"],
"部门": ["技术", "财务", "技术", "技术", "财务"],
"出勤天数": [21, 22, 19, 21, 20],
"绩效考核分": [88, 92, 79, 95, 84]
}
df = pd.DataFrame(raw_data)
# 条件筛选:挑选考核分大于等于 85 的员工
high_performers = df[df["绩效考核分"] >= 85]
print("高绩效名单:\n", high_performers[["员工", "部门", "绩效考核分"]])
# 分组聚合:按部门统计平均出勤天数与平均绩效
summary = df.groupby("部门")[["出勤天数", "绩效考核分"]].mean()
print("\n部门统计均值:\n", summary)
员工 部门 绩效考核分
0 王明 技术 88
1 李静 财务 92
3 赵雪 技术 95
部门统计均值:
出勤天数 绩效考核分
部门
财务 21.0 88.0
技术 20.3 87.3
5. Matplotlib:经典可靠的静态图表绘制
解决痛点:纯文本数据不利于洞察趋势。Matplotlib 是 Python 生态中资历最老、应用最广的绘图底座,无论是折线图、柱状图、散点图还是直方图,都能通过精细的 API 控制线条样式、坐标轴刻度及标注。
import matplotlib.pyplot as plt
# 模拟月份与对应的访客量数据
months = ["1月", "2月", "3月", "4月", "5月"]
visitors = [320, 450, 580, 510, 690]
plt.figure(figsize=(6, 3.8))
# 绘制带有数据标记点的折线
plt.plot(months, visitors, marker="o", color="#464B48", linewidth=2, label="月度活跃")
plt.title("2026年上半年访客趋势")
plt.xlabel("统计月份")
plt.ylabel("访问量 (人次)")
plt.grid(True, linestyle="--", alpha=0.6)
plt.legend()
plt.tight_layout()
# 保存为图片文件
plt.savefig("traffic_trend.png", dpi=150)
print("图表已成功生成并保存至 traffic_trend.png")
注意:在部分默认没有配置中文字体的操作系统(如 Linux 终端或特定 Windows 配置)中,直接绘制中文可能会出现小方块乱码。可通过在代码顶部设置 plt.rcParams['font.sans-serif'] = ['SimHei', 'PingFang SC'] 指定系统中已安装的字体。
(三)日常办公与多媒体处理
6. OpenPyXL:脱离 Office 读写 Excel 电子表格
解决痛点:日常办公中有大量 .xlsx 格式的报表需要处理。内置模块只能读写逗号分隔的 .csv 纯文本文件,无法保留多工作表(Sheet)、单元格公式及样式。OpenPyXL 不需要电脑安装微软 Office 软件,即可纯粹通过代码完成表格创建、修改与公式写入。
import openpyxl
# 创建全新工作簿
wb = openpyxl.Workbook()
ws = wb.active
ws.title = "采购清单"
# 写入表头与数据行
ws.append(["物品名称", "单价", "数量", "总金额"])
ws.append(["键盘", 199, 2, "=B2*C2"])
ws.append(["显示器", 1299, 1, "=B3*C3"])
# 保存至本地磁盘
wb.save("order_summary.xlsx")
print("已成功创建 Excel 文件:order_summary.xlsx")
7. Pillow (PIL):轻量实用的图片批量处理
解决痛点:当遇到需要将上百张照片统一压缩尺寸、添加半透明文字水印、截取正方形头像或从 PNG 转换为 JPEG 时,手动操作耗时耗力。Pillow 提供了简单的图像对象模型,支持几何变换、滤镜过滤以及颜色空间转换。
from PIL import Image
# 演示:创建一张 200x200 的纯色测试图像
img = Image.new("RGB", (200, 200), color=(138, 148, 120))
# 调整大小为 100x100
resized_img = img.resize((100, 100))
# 转换为黑白灰度模式
gray_img = resized_img.convert("L")
# 保存处理结果
gray_img.save("processed_thumb.jpg", format="JPEG")
print(f"原图尺寸:{img.size} -> 缩放后尺寸:{gray_img.size},模式:{gray_img.mode}")
(四)工程调试与代码质量保证
8. Rich:让黑白控制台焕发活力的终端美化工具
解决痛点:初学者的终端输出通常只有单调的单行白字,当打印复杂的嵌套字典、JSON 结构或跟踪长耗时循环时,很难看清数据层次。Rich 无需复杂的终端转义符配置,能直接在终端中输出带高亮的表格、树形目录、彩色语法以及平滑的执行进度条。
from rich.console import Console
from rich.table import Table
console = Console()
# 构建具有样式的结构化表格
table = Table(title="系统部署任务状态")
table.add_column("服务名称", style="cyan", no_wrap=True)
table.add_column("实例端口", style="magenta")
table.add_column("健康检查", style="green")
table.add_row("Auth-Service", "8001", "Healthy")
table.add_row("Payment-Gateway", "8002", "Healthy")
table.add_row("Notification-Worker", "8003", "Degraded")
console.print(table)
┃ 服务名称 ┃ 实例端口 ┃ 健康检查 ┃
┡━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━╇━━━━━━━━━━━━┩
│ Auth-Service │ 8001 │ Healthy │
│ Payment-Gateway │ 8002 │ Healthy │
│ Notification-Worker │ 8003 │ Degraded │
└─────────────────────┴──────────┴────────────┘
9. Pytest:极简高效的自动化单元测试
解决痛点:写完函数后,很多新手依靠在文件底部写 print() 语句人工比对结果,效率低且容易漏测。内置模块 unittest 遵循面向对象设计,需要继承 TestCase 类并调用专有断言方法。而 Pytest 完全抛弃样板代码,直接使用 Python 原生的 assert 关键字,即可对业务逻辑展开全自动校验。
# 业务文件或测试文件:test_calc.py
def calculate_discount(price: float, rate: float) -> float:
if not (0 < rate <= 1):
raise ValueError("折扣率必须在 (0, 1] 区间内")
return round(price * rate, 2)
def test_normal_discount():
assert calculate_discount(100.0, 0.8) == 80.0
def test_edge_zero_discount():
# 验证异常是否按预期被正确抛出
import pytest
with pytest.raises(ValueError):
calculate_discount(100.0, 0)
在终端运行命令:pytest test_calc.py
collected 2 items
test_calc.py .. [100%]
============================== 2 passed in 0.03s ===============================
(五)轻量 Web 与接口开发
10. Flask:学习成本最低的微型 Web 框架
解决痛点:当需要对外提供一个简易的数据查询接口,或者为自己写的脚本搭建一个本地网页操作界面时,重型框架 Django 的目录结构和配置项对新手来说过于繁琐。Flask 核心极度轻量,只需一个 .py 文件、不到 10 行代码,就能启动一个规范的 HTTP Web 服务。
from flask import Flask, jsonify
app = Flask(__name__)
# 定义根路径路由
@app.route("/")
def home():
return "欢迎访问简易本地 Web 站点"
# 定义 JSON 接口路由
@app.route("/api/status")
def get_status():
return jsonify({
"status": "online",
"service": "demo-backend",
"version": "1.0.0"
})
if __name__ == "__main__":
# 启动本地开发服务器,监听 5000 端口
app.run(host="127.0.0.1", port=5000)
* Debug mode: off
* Running on http://127.0.0.1:5000
Press CTRL+C to quit
三、新手容易混淆的两个核心认知辨析
表面看似合理的理由:一次性把常见库全装好,之后写任何代码都不会报错 ModuleNotFoundError,省去每次都要查库名和安装的麻烦。
实际需要修正的地方:这种做法违背了现代软件工程“最小依赖原则”。像 Pandas 和 Matplotlib 这种计算可视化库,底层依赖繁多的二进制依赖包(如 NumPy、dateutil、pytz、contourpy 等),安装过程耗时,且会占用数以百兆的磁盘空间。若你当前的项目只是写一个抓取网页文本的小脚本,安装沉重的数据分析工具没有任何意义。
正确做法:建立按需引入的习惯。每个新项目建立专属虚拟环境,用到了网络请求就只装 requests,用到了 Excel 读写就只装 openpyxl。只有在需要多库协作时才组合安装。
表面看似合理的理由:既然 Requests 比 urllib 更好用、Pandas 比内置字典更好算,那花时间记标准库的繁琐用法似乎是多此一举。
实际需要修正的地方:第三方库不是空中楼阁,它们是构建在标准库之上的封装。更关键的是,许多轻量级操作如果动辄引入第三方库,不仅会增加代码打包和部署的复杂度,还会带来意料之外的性能损耗。
例如,对于小规模的简单文件读写、路径拼接与解析,Python 3.4 引入的标准库 pathlib 已经极其现代优雅;处理标准 JSON 文本时,内置的 json 模块执行速度极快且完全无需额外安装。基石逻辑用标准库,复杂业务用第三方库,才是成熟的搭配策略。
四、清单速查与选型对照
为了方便在实际开发中快速对号入座,下表汇总了这 10 个常用第三方库的应用定位、核心优势与代码调用特征。遇到具体编程需求时,可先在矩阵中检索对应的工具库。
学习 Python 的关键不在于死记硬背每个库包含多少个函数,而在于知道什么问题应该用什么工具解决。在初学阶段,建议挑选一个与你目前最感兴趣的场景(比如自动爬取网页或者批量整理 Excel)对应的库,在独立的虚拟环境中动手运行上面的示例代码,观察输入与输出,逐步建立对 Python 第三方生态的直观理解。
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









