第1章:压测环境搭建——Python环境配置、虚拟环境创建、依赖管理

做压测脚本开发,第一步就是搭环境。这事儿看着简单,但我在项目里见过太多人在这上面栽跟头。有的同学Python版本装错了,有的依赖冲突搞到崩溃,还有的干脆把系统Python搞坏了。嗯,咱们今天就把这事儿捋清楚。

1.1 Python环境配置——选对版本很重要

我个人习惯用Python 3.8到3.11之间的版本。为什么?因为压测常用的库,比如locust、requests、aiohttp,在这些版本上兼容性最好。Python 3.12刚出的时候我试过,有几个库还没跟上,踩了一坑。

你想想看,如果版本选错了,后面写脚本时各种报错,排查起来特别浪费时间。所以我的建议是:

  • Windows用户:去官网下载Python 3.10.x,安装时记得勾选"Add Python to PATH"
  • Mac用户:用brew install python@3.10,别用系统自带的Python
  • Linux用户:用apt install python3.10 python3.10-venv(Ubuntu/Debian)

验证安装:

python3 --version
# 输出:Python 3.10.12

pip3 --version
# 输出:pip 23.0.1 from ...

注意:千万别用系统自带的Python 2.x!我曾经有个同事,直接在Python 2.7上写压测脚本,结果urllib3库都不支持了,折腾了两天才发现是版本问题。

1.2 虚拟环境创建——隔离才是王道

为什么要用虚拟环境?说白了,就是怕不同项目之间的依赖打架。我手头同时维护着五六个压测项目,有的用locust 1.x,有的用2.x,如果没有虚拟环境,那简直是一场灾难。

Python自带的venv模块就够用了,不需要额外装东西:

# 创建虚拟环境
python3 -m venv loadtest_env

# 激活虚拟环境
# Windows:
loadtest_env\Scripts\activate

# Mac/Linux:
source loadtest_env/bin/activate

# 看到终端前面多了 (loadtest_env) 就说明成功了

激活后,你安装的所有包都会隔离在这个环境里。退出时执行deactivate就行。

我的小技巧:在项目根目录下创建虚拟环境,命名规则用项目名_env。比如压测项目叫api_loadtest,环境就叫api_loadtest_env。这样一眼就能看出来是哪个项目的环境。

1.3 依赖管理——pip vs poetry

依赖管理这块,我经历过三个阶段:

  1. 初级阶段:直接pip install,装完就忘
  2. 进阶阶段:用pip freeze > requirements.txt记录依赖
  3. 专业阶段:用poetry做依赖管理和打包

对于压测脚本,我个人推荐用requirements.txt就够了。为什么?因为压测项目通常依赖不多,而且需要快速部署到压测机上。poetry虽然功能强大,但多了一层学习成本。

用pip管理依赖

# 安装常用压测库
pip install locust requests aiohttp psutil

# 导出依赖
pip freeze > requirements.txt

# 在另一台机器上安装
pip install -r requirements.txt

requirements.txt示例:

locust==2.15.1
requests==2.31.0
aiohttp==3.8.5
psutil==5.9.5

用poetry管理依赖(进阶选项)

如果你需要更严格的依赖管理,或者项目要发布成包,可以用poetry:

# 安装poetry
pip install poetry

# 初始化项目
poetry init

# 添加依赖
poetry add locust requests

# 安装所有依赖
poetry install

# 导出requirements.txt(给压测机用)
poetry export -f requirements.txt --output requirements.txt
对比项 pip + requirements.txt poetry
学习成本 低 中
依赖解析 手动管理 自动解析冲突
适用场景 快速原型、压测脚本 大型项目、需要发布
部署便捷性 高(直接pip install) 中(需要poetry环境)

避坑指南:我曾经在压测机上直接用pip install -r requirements.txt,结果因为网络问题卡了半小时。后来学乖了,先在开发机上下载好whl包,打包传到压测机上离线安装。命令是:pip download -r requirements.txt -d ./packages,然后在压测机上执行pip install --no-index --find-links ./packages -r requirements.txt。

1.4 本章知识体系

下面这张图帮你理清整个环境搭建的脉络:

压测环境搭建知识体系 Python环境配置 虚拟环境创建 依赖管理 版本选择:3.8-3.11 安装方式:官网/brew/apt 验证:python3 --version venv模块创建 激活/退出 隔离项目依赖 pip + requirements.txt poetry高级管理 离线部署方案 目标:一套可复用的压测环境模板

环境搭建这事儿,说白了就是打好地基。地基稳了,后面写脚本、跑压测才能顺风顺水。我见过太多人一上来就急着写脚本,结果环境问题浪费了大把时间。嗯,咱们先把这一步走扎实了。

最后提醒一句:每次开始新项目,都新建一个虚拟环境。别偷懒用全局环境,不然哪天依赖冲突了,哭都来不及。我吃过这个亏,所以现在特别在意这事儿。

想要更多资料,联系可可