4. Python 环境准备:Python 3.10+ 安装、虚拟环境配置与依赖管理

在开始编写欺诈图谱阈值巡检脚本之前,必须搭建一个干净、可复现的 Python 运行环境。本章将指导你完成从 Python 解释器安装到依赖锁定的全流程,确保后续章节的代码能在任何机器上一致执行。

4.1 环境版本要求与选择

本课程所有代码基于 Python 3.10+ 开发,推荐使用 Python 3.11 或 3.12。Python 3.10 引入了结构模式匹配(match-case)和更精确的错误提示,这些特性在解析图谱规则时会频繁使用。

特性 Python 3.10 Python 3.11 Python 3.12
结构模式匹配 ✅ 正式引入 ✅ 优化 ✅ 优化
异常组 (ExceptionGroup) ✅ ✅ ✅
性能提升 基准 约 10-60% 约 5-10%
类型注解语法 基础 Self/Literal 增强 泛型类语法简化
官方支持截止 2026-10 2027-10 2028-10
版本选择建议: 如果你的生产环境允许,优先选择 Python 3.11。它在性能与语法特性之间取得了最佳平衡,且与主流数据科学库(pandas、networkx)兼容性最好。

4.2 安装 Python 3.10+

根据操作系统选择安装方式:

  • Windows: 从 python.org 下载安装包,安装时务必勾选 "Add Python to PATH"。
  • macOS: 推荐使用 brew install python@3.11,或从官网下载安装器。
  • Linux (Ubuntu/Debian): 使用 deadsnakes PPA:sudo add-apt-repository ppa:deadsnakes/ppa && sudo apt install python3.11 python3.11-venv python3.11-dev。

安装完成后,验证版本:

python3 --version
# 输出示例: Python 3.11.9

python3 -m ensurepip --version
# 确保 pip 已安装

4.3 虚拟环境配置

虚拟环境隔离项目依赖,避免不同项目间的包版本冲突。本课程统一使用 Python 内置的 venv 模块,无需额外安装。

4.3.1 创建虚拟环境

在项目根目录下执行:

# 创建名为 .venv 的虚拟环境(推荐放在项目根目录)
python3 -m venv .venv

# 激活环境
# Linux/macOS:
source .venv/bin/activate

# Windows (CMD):
.venv\Scripts\activate.bat

# Windows (PowerShell):
.venv\Scripts\Activate.ps1

激活后,终端提示符前会出现 (.venv) 标识,表示当前处于虚拟环境中。

4.3.2 虚拟环境结构说明

下图展示了虚拟环境的核心目录结构与 Python 解释器隔离机制:

虚拟环境目录结构(.venv) .venv/ (根目录) bin/ (Scripts) lib/ pyvenv.cfg python / python3 pip / pip3 activate / deactivate python3.11/ site-packages/ (已安装的第三方包) 隔离原理 bin/ 中的 python 指向 lib/ 下的解释器副本,site-packages 独立于系统 Python
关键理解: 激活虚拟环境后,python 和 pip 命令指向的是 .venv/bin/ 下的副本,而非系统全局路径。所有通过 pip install 安装的包都会被写入 lib/python3.11/site-packages/,完全隔离。

4.4 依赖管理:requirements.txt

依赖管理是自动化运维的基石。本课程使用 requirements.txt 文件锁定项目依赖,确保 CI/CD 流水线或同事拉取代码后能一键复现环境。

4.4.1 生成 requirements.txt

在虚拟环境激活状态下,安装完所有依赖后执行:

# 冻结当前环境的所有包及其精确版本
pip freeze > requirements.txt

生成的 requirements.txt 内容示例:

networkx==3.2.1
pandas==2.2.0
numpy==1.26.3
matplotlib==3.8.2
pyyaml==6.0.1
schedule==1.2.0
loguru==0.7.2
pydantic==2.5.3

4.4.2 从 requirements.txt 安装依赖

在新环境中复现依赖:

# 创建并激活虚拟环境后执行
pip install -r requirements.txt

4.4.3 依赖分类管理(进阶)

对于生产级项目,建议按用途拆分依赖文件:

文件名 用途 示例包
requirements/base.txt 生产环境核心依赖 networkx, pandas, pyyaml
requirements/dev.txt 开发/测试工具 pytest, black, mypy, pre-commit
requirements/ci.txt CI 流水线专用 coverage, pytest-xdist

通过 -r 参数实现继承:

# dev.txt 内容示例
-r base.txt
pytest==8.0.0
black==24.1.1
避坑提醒: 不要直接使用 pip freeze > requirements.txt 导出包含系统级包或无关依赖的环境。建议在干净的虚拟环境中只安装项目所需包后再冻结。如果使用 pipenv 或 poetry,它们会自动处理依赖树,但本课程为保持教学简洁,统一使用 requirements.txt + venv 方案。

4.5 环境验证脚本

完成环境搭建后,运行以下脚本验证所有组件就绪:

# check_env.py
import sys
import importlib

required_packages = [
    ("networkx", "3.0"),
    ("pandas", "2.0"),
    ("numpy", "1.24"),
    ("yaml", "6.0"),
    ("schedule", "1.0"),
    ("loguru", "0.7"),
]

print(f"Python 版本: {sys.version}")
print(f"虚拟环境路径: {sys.prefix}")
print("-" * 40)

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}: {ver} (需要 >= {min_ver})")
    except ImportError:
        print(f"❌ {pkg_name}: 未安装")
        all_ok = False

print("-" * 40)
if all_ok:
    print("✅ 环境检查通过,可以开始阈值巡检开发!")
else:
    print("❌ 环境不完整,请检查缺失的依赖。")

执行方式:

python check_env.py

4.6 本章小结

  • 使用 Python 3.10+,推荐 3.11 版本。
  • 通过 python3 -m venv .venv 创建隔离环境,激活后操作。
  • 使用 pip freeze > requirements.txt 锁定依赖,pip install -r requirements.txt 复现环境。
  • 生产项目可拆分 base/dev/ci 多文件管理依赖。
  • 运行 check_env.py 验证环境完整性。