2. 环境准备与工具链:Python环境搭建、Docker安装与配置、Git版本控制、VS Code与Jupyter Notebook配置
说实话,做数据流水线这件事,工具链就是你的武器库。武器没磨好,后面写再多代码也是白搭。这一章咱们就把这些家伙事儿一一搞定。
本章核心目标:搭建一套可复用的数据工程开发环境。所有操作都基于 macOS / Ubuntu / Windows WSL2,保证你学完就能直接上手干活。
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 有两种玩法:
- VS Code 内嵌:新建
.ipynb文件,直接写代码,适合快速验证 - 独立 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")
如果没报错,恭喜你,环境准备完毕。后面咱们就可以专心写流水线代码了。