3. 操作系统与基础工具

智能寻源算法的开发与测试依赖稳定的底层环境。本章将系统讲解操作系统选型、双平台环境准备、核心语言运行时安装以及版本控制与容器化工具的初始化配置。所有步骤均经过供应链算法团队的实测验证,确保后续品类策略模块能够无缝集成。

3.1 操作系统环境准备

推荐使用 Ubuntu 22.04 LTS 作为主要开发操作系统,Windows 11 专业版作为辅助测试平台。以下为双平台关键环境对比:

配置项 Linux (Ubuntu 22.04) Windows 11
内核版本 5.15 LTS 10.0.22621
包管理器 apt / snap winget / chocolatey
文件系统 ext4 (推荐) NTFS
Shell bash 5.1 PowerShell 7.3 / WSL2
资源限制 ulimit 可调 任务管理器 / 组策略
选型建议: 若团队使用 MacOS,可通过 Docker Desktop 保持环境一致性;但本课程所有脚本与配置均以 Linux 为第一优先级,Windows 用户请务必启用 WSL2。

3.1.1 Linux 基础环境初始化

# 更新系统包索引并安装基础编译工具
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential curl wget vim net-tools

# 配置时区与语言环境
sudo timedatectl set-timezone Asia/Shanghai
sudo locale-gen zh_CN.UTF-8
export LANG=zh_CN.UTF-8

3.1.2 Windows 环境准备要点

  • 启用 WSL2: 以管理员身份运行 PowerShell,执行 wsl --install -d Ubuntu-22.04。
  • 安装 Windows Terminal: 从 Microsoft Store 获取,提升多标签管理效率。
  • 配置环境变量: 将 %USERPROFILE%\bin 加入 PATH,用于存放自定义脚本。
避坑提示: Windows 路径分隔符为反斜杠 \,在 Python 字符串中需转义或使用原始字符串 r"..."。建议在 WSL2 内统一使用 Linux 路径风格。

3.2 Python 运行环境安装

智能寻源算法核心使用 Python 3.10+,依赖管理采用 poetry 与 conda 双轨制。以下为安装步骤:

3.2.1 Linux 下安装 Python 3.10

# 通过 deadsnakes PPA 安装
sudo add-apt-repository ppa:deadsnakes/ppa -y
sudo apt update
sudo apt install -y python3.10 python3.10-dev python3.10-venv

# 验证安装
python3.10 --version
# 输出: Python 3.10.12

3.2.2 配置虚拟环境与包管理器

# 安装 pip 与 poetry
python3.10 -m ensurepip --upgrade
pip3 install --user poetry==1.8.2

# 创建项目虚拟环境
poetry new sourcing_algorithm
cd sourcing_algorithm
poetry env use python3.10
poetry install
工具 用途 配置文件
poetry 依赖解析与打包 pyproject.toml
conda 科学计算环境隔离 environment.yml
pip 临时包安装 requirements.txt
关键依赖清单: numpy==1.26.2、pandas==2.1.4、scikit-learn==1.3.2、pytest==7.4.3、black==23.12.0。后续品类策略模块将在此基础上扩展。

3.3 Java 运行环境安装

部分寻源算法中的规则引擎与微服务网关采用 Java 17 (LTS)。推荐使用 OpenJDK 发行版。

3.3.1 Linux 安装 OpenJDK 17

# 使用 apt 直接安装
sudo apt install -y openjdk-17-jdk openjdk-17-jre

# 设置 JAVA_HOME
echo 'export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64' >> ~/.bashrc
echo 'export PATH=$JAVA_HOME/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# 验证
java --version
# 输出: openjdk 17.0.9 2023-10-17

3.3.2 Windows 安装与配置

  • 从 Adoptium 下载 MSI 安装包,选择 jdk-17.0.9+9。
  • 安装后手动添加系统环境变量 JAVA_HOME 指向 C:\Program Files\Eclipse Adoptium\jdk-17.0.9.9-hotspot。
  • 将 %JAVA_HOME%\bin 加入 Path。
版本兼容性: 品类策略模块中的 Drools 规则引擎要求 Java 17+,请勿使用 Java 8 或 11 运行生产级测试。

3.4 Git 基础配置

版本控制是算法迭代的基石。以下为团队统一配置标准:

# 全局用户信息
git config --global user.name "Your Name"
git config --global user.email "your.email@company.com"

# 推荐别名与行为
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.st status
git config --global core.autocrlf input   # Linux/Mac
git config --global core.editor vim

3.4.1 仓库初始化与分支策略

  • 主分支: main 保护,禁止直接推送。
  • 开发分支: dev 用于日常集成。
  • 特性分支: feature/品类策略-xxx 命名规范。
# 克隆课程仓库
git clone git@github.com:company/sourcing-algorithm-course.git
cd sourcing-algorithm-course
git checkout -b feature/env-setup
安全提醒: 禁止将 .env、config/local.yaml 等敏感文件提交到仓库。请在项目根目录创建 .gitignore 并添加 *.log、__pycache__/、.idea/。

3.5 Docker 基础配置

容器化确保寻源算法在开发、测试、生产环境的行为一致。本课程使用 Docker Engine 24.0 + Docker Compose v2。

3.5.1 Linux 安装 Docker

# 卸载旧版本
sudo apt remove docker docker-engine docker.io containerd runc

# 使用官方脚本安装
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

# 将当前用户加入 docker 组(避免每次 sudo)
sudo usermod -aG docker $USER
newgrp docker

# 验证
docker --version
# Docker version 24.0.7, build afdd53b

3.5.2 Docker Compose 配置

# 安装 Compose v2 插件
sudo apt install -y docker-compose-plugin

# 验证
docker compose version
# Docker Compose version v2.23.0

3.5.3 基础镜像与网络规划

为品类策略模块准备以下 Docker 镜像:

镜像名称 标签 用途
python 3.10-slim 算法引擎基础镜像
openjdk 17-slim 规则引擎容器
postgres 16-alpine 品类数据存储
redis 7.2-alpine 缓存与队列
# 拉取基础镜像
docker pull python:3.10-slim
docker pull openjdk:17-slim
docker pull postgres:16-alpine
docker pull redis:7.2-alpine

# 创建共享网络
docker network create sourcing-net
测试验证: 执行 docker run --rm hello-world 确认 Docker 守护进程正常运行。后续章节将基于此网络搭建完整的寻源算法测试集群。

3.6 环境验证清单

完成上述安装后,请逐项确认以下检查点:

  1. Python: python3.10 -c "import numpy; print(numpy.__version__)" 输出 1.26.2。
  2. Java: javac -version 输出 javac 17.0.9。
  3. Git: git config --global --list 包含 user.name 与 user.email。
  4. Docker: docker info | grep "Server Version" 显示 24.0.x。
  5. 网络: docker network inspect sourcing-net 返回正常 JSON。
自动化脚本: 课程仓库 scripts/check_env.sh 提供一键验证,运行 bash check_env.sh 即可输出通过/失败状态。
智能寻源算法环境架构总览 操作系统层 Ubuntu 22.04 LTS(主) / Windows 11 + WSL2(辅) 语言运行时层 Python 3.10 + poetry OpenJDK 17 + Maven Node.js 20(可选) 工具与版本控制层 Git 2.40+ | Docker 24.0 + Compose v2 | Poetry / Conda 基础设施层 PostgreSQL 16 | Redis 7.2 | 共享网络 sourcing-net

3.7 常见问题与排错

问题现象 可能原因 解决方案
docker: permission denied 用户未加入 docker 组 sudo usermod -aG docker $USER 并重新登录
poetry: command not found 用户 bin 目录未在 PATH 中 添加 export PATH="$HOME/.local/bin:$PATH" 到 ~/.bashrc
Java: 无法加载主类 JAVA_HOME 未正确设置 检查 echo $JAVA_HOME 是否指向 JDK 根目录
git: 推送被拒绝 分支受保护或 SSH 密钥未配置 使用 ssh-keygen -t ed25519 生成密钥并添加到 GitLab/GitHub