第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
依赖管理这块,我经历过三个阶段:
- 初级阶段:直接
pip install,装完就忘 - 进阶阶段:用
pip freeze > requirements.txt记录依赖 - 专业阶段:用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 本章知识体系
下面这张图帮你理清整个环境搭建的脉络:
环境搭建这事儿,说白了就是打好地基。地基稳了,后面写脚本、跑压测才能顺风顺水。我见过太多人一上来就急着写脚本,结果环境问题浪费了大把时间。嗯,咱们先把这一步走扎实了。
最后提醒一句:每次开始新项目,都新建一个虚拟环境。别偷懒用全局环境,不然哪天依赖冲突了,哭都来不及。我吃过这个亏,所以现在特别在意这事儿。
想要更多资料,联系可可