2. 环境准备与工具链:Python环境搭建、Docker安装与配置、Git版本控制、VS Code与Jupyter Notebook配置

说实话,做数据流水线这件事,工具链就是你的武器库。武器没磨好,后面写再多代码也是白搭。这一章咱们就把这些家伙事儿一一搞定。

本章核心目标:搭建一套可复用的数据工程开发环境。所有操作都基于 macOS / Ubuntu / Windows WSL2,保证你学完就能直接上手干活。

数据流水线工具链全景图 数据流水线开发环境 Python 3.10+ Docker & Compose Git & GitHub VS Code + Jupyter pyenv + venv 镜像 + 容器编排 分支策略 + CI/CD 远程开发 + 交互式 目标:一次配置,到处运行 环境一致性 · 可复现 · 可协作

2.1 Python 环境搭建

Python 版本管理是个老生常谈的问题。我个人习惯用 pyenv 来管理多版本,而不是直接装系统级 Python。为什么?因为项目之间依赖冲突太常见了。我曾经在一个团队里,有人用 Python 3.6,有人用 3.9,结果 requirements.txt 一锁就炸。

2.1.1 安装 pyenv

macOS 用户一行搞定:

brew install pyenv

Ubuntu / WSL2 用户:

curl https://pyenv.run | bash

装完后记得把下面几行加到 ~/.bashrc 或 ~/.zshrc:

export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init --path)"

小技巧:装完重启终端,跑 pyenv --version 验证。如果报错,八成是 shell 配置没生效,手动 source 一下就行。

2.1.2 安装 Python 3.10

咱们这门课统一用 Python 3.10,兼顾稳定性和新特性:

pyenv install 3.10.12
pyenv global 3.10.12
python --version

嗯,这里要注意:pyenv global 只是设了个默认版本,你完全可以在项目目录里用 pyenv local 3.10.12 覆盖它。

2.1.3 虚拟环境

我见过太多人直接在全局装包,结果某天发现两个项目需要不同版本的 pandas。虚拟环境就是用来解决这个的。

创建并激活:

python -m venv .venv
source .venv/bin/activate   # macOS / Linux
# .venv\Scripts\activate    # Windows

激活后终端前面会出现 (.venv) 字样。这时候你 pip install 的所有包都只在这个环境里生效。

避坑:千万别把 .venv 目录提交到 Git!在项目根目录创建 .gitignore,写上 .venv/。我刚开始带团队时,有人把整个虚拟环境 push 上去了,几百兆的垃圾文件…

2.2 Docker 安装与配置

Docker 是数据流水线的基石。说白了,它让你能把整个运行环境打包成一个「箱子」,到哪都能跑。我在项目中遇到过好几次「在我机器上好好的」这种尴尬,自从上了 Docker,再也没发生过。

2.2.1 安装 Docker Desktop

操作系统 安装方式 备注
macOS (Intel) brew install --cask docker 或官网下载 .dmg
macOS (Apple Silicon) brew install --cask docker 自动识别 arm64
Ubuntu apt install docker.io 需额外安装 docker-compose
Windows Docker Desktop for Windows 必须启用 WSL2

装完后启动 Docker,跑个 hello-world 验证:

docker run hello-world

看到一段欢迎信息就说明成了。

个人建议:如果你用 macOS 或 Windows,Docker Desktop 是最省心的选择。Linux 用户直接用 docker.io 包就行,别折腾 snap 版,我踩过坑。

2.2.2 Docker Compose

Docker Compose 让你用 YAML 文件定义多个容器。咱们后面做流水线时,经常需要同时跑 MySQL、Redis、Spark,手动一个个启动会疯的。

检查是否已安装:

docker compose version

如果没装,单独安装:

# Linux 用户
sudo apt install docker-compose-plugin

# 或手动下载
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

2.2.3 配置镜像加速

国内拉镜像慢是常态。我建议配置阿里云或中科大的镜像加速器。以 Docker Desktop 为例,在 Settings → Docker Engine 里加上:

{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

保存后重启 Docker,再拉镜像就快多了。

2.3 Git 版本控制

Git 不是用来存代码的,是用来管理「变化」的。数据流水线项目里,你改个 SQL 逻辑、调个参数,都得有迹可循。

2.3.1 安装与初始配置

# macOS
brew install git

# Ubuntu
sudo apt install git

# Windows
# 从 git-scm.com 下载安装包

装完后配好身份信息:

git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"

核心配置:建议设置默认分支名为 main:git config --global init.defaultBranch main。GitHub 已经全面切到 main 了,咱们保持一致。

2.3.2 工作流建议

我个人习惯用这种分支策略:

  • main:只放可发布的稳定代码
  • dev:日常开发分支
  • feature/xxx:每个新功能单独开分支

你想想看,如果直接在 main 上改,出了问题回滚都麻烦。我曾经有一次误删了关键脚本,还好有 Git 救回来。

2.3.3 创建你的第一个仓库

mkdir data-pipeline-course
cd data-pipeline-course
git init
echo "# Data Pipeline Course" > README.md
git add .
git commit -m "初始化项目"

然后去 GitHub 新建一个空仓库,关联上去:

git remote add origin https://github.com/你的用户名/data-pipeline-course.git
git push -u origin main

2.4 VS Code 与 Jupyter Notebook 配置

编辑器这东西,顺手最重要。VS Code 胜在插件生态和远程开发能力。Jupyter Notebook 则适合做数据探索和原型验证。

2.4.1 VS Code 必装插件

插件名 用途 为什么装
Python 语言支持 智能提示、调试、测试
Jupyter Notebook 支持 在 VS Code 里直接跑 .ipynb
Docker 容器管理 可视化查看镜像和容器
GitLens Git 增强 每行代码谁写的、什么时候写的
YAML YAML 支持 写 Docker Compose 和 CI 配置

装完这些,你的 VS Code 基本就武装到牙齿了。

2.4.2 配置 Python 解释器

打开命令面板(Cmd+Shift+P / Ctrl+Shift+P),搜索 Python: Select Interpreter,选择你刚才用 pyenv 安装的 Python 3.10。如果你在项目里激活了虚拟环境,它会自动识别 .venv 里的解释器。

小技巧:在项目根目录创建 .vscode/settings.json,写上:

{
  "python.defaultInterpreterPath": "./.venv/bin/python",
  "python.terminal.activateEnvironment": true
}

这样每次打开终端都自动激活虚拟环境,省心。

2.4.3 Jupyter Notebook 配置

Jupyter 有两种玩法:

  1. VS Code 内嵌:新建 .ipynb 文件,直接写代码,适合快速验证
  2. 独立 Jupyter Lab:功能更全,适合做数据分析报告

安装独立版:

pip install jupyterlab
jupyter lab

浏览器会自动打开 http://localhost:8888。我个人习惯把 Notebook 和项目代码放在一起,方便版本管理。

注意:Notebook 里的执行顺序容易乱。我建议每次重启 Kernel 再跑一遍,确保结果可复现。另外,.ipynb 文件里的输出结果不要提交到 Git,可以在 .gitignore 里忽略 *.ipynb_checkpoints/。

2.5 验证环境

所有工具装完后,跑个简单的测试脚本,确保一切联通:

# test_env.py
import sys
import docker
import git

print(f"Python 版本: {sys.version}")
print(f"Docker 可用: {docker.from_env().ping()}")
print("Git 已安装: OK")

如果没报错,恭喜你,环境准备完毕。后面咱们就可以专心写流水线代码了。