3. 测试环境搭建:Python虚拟环境配置、依赖库安装
在开始供应链控制塔异常检测链路的测试验证之前,必须建立一个干净、可复现的Python运行环境。本章将指导你完成从虚拟环境创建到核心依赖库安装的全过程,确保所有测试用例在一致的软件栈上执行,避免因环境差异导致的误判。
3.1 环境准备清单
下表列出了搭建测试环境所需的软件组件及其推荐版本。请在实际操作前确认系统已安装Python 3.9+及pip包管理器。
| 组件 | 推荐版本 | 用途说明 |
|---|---|---|
| Python | 3.9 ~ 3.12 | 运行时基础解释器 |
| pip | ≥ 23.0 | 包依赖管理工具 |
| venv | 内置模块 | 创建隔离虚拟环境 |
| pandas | ≥ 2.0 | 时序数据清洗与特征工程 |
| numpy | ≥ 1.24 | 数值计算与矩阵运算 |
| scikit-learn | ≥ 1.3 | 异常检测模型训练与评估 |
| matplotlib | ≥ 3.7 | 检测结果可视化与报告生成 |
| kafka-python | ≥ 2.0 | Kafka消息队列消费与生产 |
版本兼容性提示: 建议使用Python 3.10作为基准版本,该版本对上述所有库的二进制wheel支持最完整,可避免编译安装带来的额外耗时。
3.2 虚拟环境创建与激活
虚拟环境是Python项目隔离的最佳实践。以下步骤演示如何为异常检测链路测试创建专用环境。
- 创建项目目录:在合适位置新建文件夹
scm_ct_test,作为所有测试脚本和数据的根目录。 - 初始化虚拟环境:在终端中进入该目录,执行以下命令创建名为
.venv的虚拟环境。
cd scm_ct_test
python -m venv .venv
- 激活虚拟环境:根据操作系统选择对应激活命令。
| 操作系统 | 激活命令 |
|---|---|
| Windows (CMD) | .venv\Scripts\activate.bat |
| Windows (PowerShell) | .venv\Scripts\Activate.ps1 |
| macOS / Linux | source .venv/bin/activate |
激活成功后,终端提示符前会出现 (.venv) 前缀,表示当前已进入隔离环境。
常见错误: 如果Windows PowerShell提示执行策略限制,请先以管理员身份运行
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser,然后重新激活。
3.3 依赖库批量安装
为便于团队协作和环境复现,建议将所有依赖写入 requirements.txt 文件,然后通过pip一次性安装。
- 创建依赖清单:在项目根目录新建
requirements.txt,写入以下内容。
pandas>=2.0, <3.0
numpy>=1.24, <2.0
scikit-learn>=1.3, <2.0
matplotlib>=3.7, <4.0
kafka-python>=2.0, <3.0
- 执行安装:确保虚拟环境已激活,运行以下命令。
pip install -r requirements.txt
- 验证安装结果:通过Python交互式解释器逐一导入各库,确认版本符合预期。
python -c "import pandas; print('pandas', pandas.__version__)"
python -c "import numpy; print('numpy', numpy.__version__)"
python -c "import sklearn; print('scikit-learn', sklearn.__version__)"
python -c "import matplotlib; print('matplotlib', matplotlib.__version__)"
python -c "import kafka; print('kafka-python', kafka.__version__)"
离线环境安装方案: 若测试环境无法访问外网,可先在能联网的机器上执行
pip download -r requirements.txt -d ./offline_pkgs 下载所有wheel包,然后拷贝到离线环境执行 pip install --no-index --find-links ./offline_pkgs -r requirements.txt。
3.4 环境架构总览
下图展示了测试环境中各组件之间的逻辑关系与数据流向。虚拟环境作为隔离层,承载所有Python库;pandas和numpy负责数据预处理,scikit-learn执行异常检测算法,matplotlib生成可视化报告,kafka-python则连接消息中间件实现实时数据接入。
3.5 环境验证脚本
完成安装后,建议编写一个完整的验证脚本 check_env.py,一次性检查所有依赖是否就绪。该脚本也可作为CI/CD流水线中的前置检查步骤。
#!/usr/bin/env python
"""供应链控制塔测试环境验证脚本"""
import sys
import importlib
REQUIRED_PACKAGES = [
('pandas', '2.0.0'),
('numpy', '1.24.0'),
('sklearn', '1.3.0'),
('matplotlib', '3.7.0'),
('kafka', '2.0.0'),
]
def check_environment():
print("=" * 50)
print("测试环境依赖检查")
print("=" * 50)
print(f"Python版本: {sys.version.split()[0]}\n")
all_ok = True
for pkg_name, min_ver in REQUIRED_PACKAGES:
try:
mod = importlib.import_module(pkg_name)
ver = getattr(mod, '__version__', 'unknown')
status = "✓" if ver >= min_ver else "⚠"
print(f" {status} {pkg_name:20s} 版本 {ver:10s} (要求 ≥ {min_ver})")
if ver < min_ver:
all_ok = False
except ImportError:
print(f" ✗ {pkg_name:20s} 未安装")
all_ok = False
print("\n" + "=" * 50)
if all_ok:
print(" 环境验证通过,可以开始测试!")
else:
print(" 环境存在缺失或版本过低,请修正后重试。")
print("=" * 50)
if __name__ == "__main__":
check_environment()
执行方式: 在激活的虚拟环境中运行
python check_env.py,脚本将输出每个库的安装状态和版本号,并用符号标记是否满足最低版本要求。
3.6 常见问题与排查
- pip安装超时:使用国内镜像源加速,例如
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple。 - kafka-python与librdkafka冲突:kafka-python为纯Python实现,无需编译C扩展,若遇到冲突请确保未同时安装confluent-kafka。
- matplotlib后端警告:在无GUI的服务器上运行时,在脚本开头添加
import matplotlib; matplotlib.use('Agg')切换为非交互式后端。 - 虚拟环境路径包含中文或空格:某些库在编译时可能因路径编码问题失败,建议项目路径仅使用英文字母、数字和下划线。