2. 环境搭建与工具链:Python 3.10+ 与核心依赖
说实话,做失效预警系统,环境搭不好后面全是坑。我见过太多人代码写了一半,发现 Python 版本不对、依赖冲突、或者 smtplib 发不出邮件——然后回头重来。这一章,咱们就把地基打牢。
2.1 Python 3.10+ 环境配置
我个人习惯用 Python 3.10 起步。为什么不是 3.9 或 3.11?3.10 引入了结构模式匹配(match-case),后面写告警规则解析时会很顺手;3.11 虽然更快,但部分第三方库的兼容性在早期版本里翻过车。稳妥起见,选 3.10。
python --version
# 输出示例:Python 3.10.12
如果版本低于 3.10,去 python.org 下载对应安装包。Linux 用户可以用 deadsnakes PPA 或源码编译。
安装完后,顺手把 pip 升到最新——这一步很多人忘,导致后面装库报错。
python -m pip install --upgrade pip
2.2 虚拟环境管理
虚拟环境这东西,说白了就是给每个项目一个独立的 Python 小世界。我曾经在一个服务器上同时跑三个预警项目,依赖版本全混在一起,最后不得不删掉重来。从那以后,我每个项目都建独立的虚拟环境。
Python 3.3+ 自带 venv,不用额外装包。操作很简单:
# 创建虚拟环境(在项目根目录下执行)
python -m venv venv
# 激活(Windows)
venv\Scripts\activate
# 激活(macOS/Linux)
source venv/bin/activate
# 退出
deactivate
.gitignore,加上一行 venv/。不然队友拉下来还得手动删。
激活后,终端前面会出现 (venv) 标识。这时候你安装的所有库都只在这个环境里生效。
2.3 核心依赖库安装与验证
我们的失效预警系统依赖四个核心库:Prometheus_client(指标采集)、Flask(Web 服务)、APScheduler(定时任务)、smtplib(邮件告警)。其中 smtplib 是 Python 内置库,不用装;其他三个需要手动安装。
2.3.1 安装命令
pip install prometheus-client flask apscheduler
嗯,就一行。但别急着走——装完一定要验证。
2.3.2 验证清单
我习惯写一个快速验证脚本,跑一遍就知道所有库是否就绪。你想想看,如果等到写代码时才发现某个库没装上,那得多浪费时间。
# verify_env.py
import sys
import smtplib
def check_version(name, version):
print(f"[✓] {name}: {version}")
# Python 版本
check_version("Python", sys.version)
# Prometheus_client
try:
from prometheus_client import Counter, Gauge, start_http_server
check_version("prometheus_client", "imported successfully")
except ImportError as e:
print(f"[✗] prometheus_client: {e}")
# Flask
try:
import flask
check_version("Flask", flask.__version__)
except ImportError as e:
print(f"[✗] Flask: {e}")
# APScheduler
try:
import apscheduler
check_version("APScheduler", apscheduler.__version__)
except ImportError as e:
print(f"[✗] APScheduler: {e}")
# smtplib(内置库)
try:
import smtplib
check_version("smtplib", "built-in")
except ImportError as e:
print(f"[✗] smtplib: {e}")
print("\n环境验证完成。")
运行方式:
python verify_env.py
如果所有项都显示 [✓],说明环境就绪。如果有 [✗],重新执行安装命令,或者检查网络/权限问题。
2.4 核心依赖速查表
| 库名 | 版本要求 | 用途 | 安装方式 |
|---|---|---|---|
| prometheus_client | ≥0.17.0 | 暴露指标端点,供 Prometheus 抓取 | pip install prometheus-client |
| Flask | ≥2.3.0 | 提供 Web 接口与告警回调 | pip install flask |
| APScheduler | ≥3.10.0 | 定时检查失效规则 | pip install apscheduler |
| smtplib | 内置 | 发送邮件告警 | 无需安装 |
2.5 环境结构总览
下面这张图,把整个环境搭建的逻辑串起来了。从 Python 3.10 开始,经过虚拟环境隔离,再到四个核心库,最后汇聚到我们的失效预警系统。
2.6 避坑指南
- pip 安装超时:国内网络环境有时连不上 PyPI。加国内镜像源:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名 - 虚拟环境激活失败:Windows 上如果报「无法加载文件」,用管理员身份打开 PowerShell,执行
Set-ExecutionPolicy RemoteSigned即可。 - Flask 端口被占用:默认 5000 端口可能被其他服务占用。启动时指定端口:
app.run(port=5001) - smtplib 发不出邮件:QQ邮箱/163邮箱需要开启 SMTP 服务并获取授权码,不是用登录密码。这个坑我踩过两次。
环境搭建完成标志:你能在虚拟环境中成功运行 verify_env.py,且所有库都显示 [✓]。这时候,你的开发环境就准备好了。