3. 环境搭建:Python 虚拟环境配置与依赖管理
本章聚焦于构建一个可复现、隔离的 Python 实验环境,用于后续的 API 延迟诊断与基线偏差回归分析。我们将依次完成虚拟环境创建、核心依赖锁定、HTTP 测试客户端选型以及数据科学库的安装。
3.1 Python 虚拟环境配置
虚拟环境确保项目依赖与系统全局 Python 环境隔离,避免版本冲突。推荐使用 Python 3.10+ 内置的 venv 模块。
操作步骤:
- 创建项目目录并进入:
mkdir latency-regression-check && cd latency-regression-check - 创建虚拟环境:
python3 -m venv .venv - 激活虚拟环境:
- Linux/macOS:
source .venv/bin/activate - Windows (PowerShell):
.venv\Scripts\Activate.ps1
- Linux/macOS:
- 验证激活:终端提示符前出现
(.venv)前缀,且which python指向环境内路径。
最佳实践:将
.venv/ 目录加入 .gitignore 文件,避免将虚拟环境本身提交到版本控制。仅通过 requirements.txt 管理依赖。
3.2 依赖管理:requirements.txt
requirements.txt 是 Python 项目依赖的声明式清单,配合 pip freeze 可实现精确版本锁定。
| 命令 | 用途 | 示例输出 |
|---|---|---|
pip freeze > requirements.txt |
将当前环境所有已安装包及其版本号导出到文件 | requests==2.31.0 |
pip install -r requirements.txt |
根据文件内容批量安装指定版本的依赖 | 自动解析并安装 |
pip list --format=columns |
以表格形式列出当前环境所有包 | 包名 + 版本号 |
版本锁定陷阱:不要直接使用
pip freeze > requirements.txt 不加筛选,它会包含大量隐式依赖(如 pip、setuptools 本身)。推荐手动维护核心依赖列表,或使用 pip-compile(来自 pip-tools)生成干净清单。
3.3 API 测试框架安装:requests vs httpx
在延迟诊断场景中,HTTP 客户端的性能与异步能力直接影响测试精度。下表对比了 requests 与 httpx 的核心差异:
| 特性 | requests | httpx |
|---|---|---|
| 同步请求 | ✅ 原生支持 | ✅ 原生支持 |
| 异步请求 (async/await) | ❌ 不支持 | ✅ 原生支持 |
| HTTP/2 支持 | ❌ 不支持 | ✅ 支持 |
| 连接超时控制 | ✅ timeout 参数 |
✅ timeout 参数 |
| 安装命令 | pip install requests |
pip install httpx |
选型建议:
- 若仅需同步测试且追求生态成熟度,选择
requests。 - 若需并发发送大量延迟探测请求(如 100+ QPS 的基线扫描),推荐
httpx的异步客户端,可显著降低资源开销。 - 本课程后续示例将同时提供两种实现,但默认使用
httpx以展示异步能力。
# 安装命令(在激活的虚拟环境中执行)
pip install requests==2.31.0
pip install httpx==0.27.0
3.4 数据科学库安装:pandas & numpy
延迟诊断产生的原始时间戳数据需要经过清洗、聚合与统计分析,才能提取出基线偏差特征。pandas 提供 DataFrame 结构用于表格化处理,numpy 提供底层数值计算支持。
| 库名 | 版本(推荐) | 核心用途 | 安装命令 |
|---|---|---|---|
| pandas | 2.1.x | 数据加载、清洗、分组聚合、时间序列重采样 | pip install pandas==2.1.4 |
| numpy | 1.26.x | 数组运算、百分位数计算、统计指标(均值/标准差) | pip install numpy==1.26.2 |
验证安装:在 Python 交互式环境中执行以下代码,确认库可正常导入且版本正确:
import pandas as pd; print(pd.__version__)import numpy as np; print(np.__version__)
3.5 完整 requirements.txt 示例
以下是一个针对本课程定制的依赖清单,包含精确版本号,确保跨环境一致性:
# API 测试框架
httpx==0.27.0
requests==2.31.0
# 数据科学核心库
pandas==2.1.4
numpy==1.26.2
# 辅助工具(可选)
python-dotenv==1.0.0 # 环境变量管理
pyyaml==6.0.1 # YAML 配置解析
一键安装:将上述内容保存为
等待安装完成后,可通过
requirements.txt,然后在激活的虚拟环境中执行:pip install -r requirements.txt等待安装完成后,可通过
pip list 确认所有包已就绪。
3.6 环境验证脚本
编写一个简短的验证脚本,确保所有核心组件可正常工作:
# verify_env.py
import sys
import httpx
import pandas as pd
import numpy as np
def check_environment():
"""验证虚拟环境中的核心依赖是否就绪"""
print(f"Python 版本: {sys.version}")
print(f"httpx 版本: {httpx.__version__}")
print(f"pandas 版本: {pd.__version__}")
print(f"numpy 版本: {np.__version__}")
# 简单功能测试
arr = np.array([1, 2, 3])
print(f"numpy 数组均值: {np.mean(arr)}")
df = pd.DataFrame({"latency_ms": [100, 200, 150]})
print(f"pandas 延迟统计:\n{df.describe()}")
print("✅ 环境验证通过,所有依赖正常。")
if __name__ == "__main__":
check_environment()
执行 python verify_env.py,若输出无报错且版本号匹配预期,则环境搭建完成,可进入下一阶段的 API 延迟采集与基线构建。