第10章:开发环境搭建——Python虚拟环境配置、Node.js环境安装、Git版本控制、Docker容器化开发环境
说实话,很多初学者一上来就急着写代码,结果环境配了三天还没跑通第一个程序。我见过太多这样的案例了。环境搭建这事儿,看着琐碎,但它是你后续所有工作的地基。地基不稳,楼盖得再高也得塌。
这一章,咱们就把Python虚拟环境、Node.js、Git和Docker这四个核心工具一次性搞定。我会把我在项目中踩过的坑、总结的经验都抖出来,你跟着一步步来就行。
10.1 Python虚拟环境:为什么你必须用它?
先问个问题:你电脑上是不是装了好几个Python项目?有的用Django 2.0,有的用Flask 2.0,还有的用TensorFlow 1.x?如果你把所有依赖都装到全局环境里,那简直就是一场灾难。
虚拟环境的核心作用就是隔离。每个项目有自己的依赖包,互不干扰。我刚开始做AI编程助手项目时,就因为全局环境里装了两个版本的requests库,调试了整整一个下午才发现问题。嗯,从那以后,我每个项目必建虚拟环境。
10.1.1 使用venv创建虚拟环境
Python 3.3以上版本自带venv模块,不需要额外安装。我个人习惯用这个,轻量、干净。
# 创建虚拟环境
python -m venv myenv
# 激活虚拟环境(Windows)
myenv\Scripts\activate
# 激活虚拟环境(macOS/Linux)
source myenv/bin/activate
# 退出虚拟环境
deactivate
激活后,你会看到命令行前面多了个 (myenv) 前缀,这就说明你已经在虚拟环境里了。这时候你安装的所有包,都只在这个环境里生效。
.venv。这样既隐蔽又统一,而且很多IDE会自动识别它。
10.1.2 使用pip管理依赖
有了虚拟环境,接下来就是管理依赖了。记住两个核心命令:
# 安装依赖
pip install requests==2.28.1
# 导出依赖清单
pip freeze > requirements.txt
# 从清单安装依赖
pip install -r requirements.txt
为什么要用requirements.txt? 你想想看,如果你把项目分享给同事,或者部署到服务器上,总不能让人家一个个手动装吧?有了这个文件,一行命令就搞定了。
pip freeze,结果导出了几百个包,把项目搞得乱七八糟。记住,一定要在虚拟环境激活状态下操作。
10.2 Node.js环境安装:前端开发的基础设施
AI编程助手的前端部分,或者某些工具链,都离不开Node.js。说白了,它就是JavaScript的运行环境,让你能在服务器端跑JS代码。
10.2.1 安装Node.js和npm
我建议你直接去官网下载LTS版本。别追新,稳定才是王道。我在项目中遇到过因为用了最新版导致某些包不兼容的情况,折腾了半天。
| 版本类型 | 适用场景 | 我的建议 |
|---|---|---|
| LTS(长期支持) | 生产环境、正式项目 | 首选,稳定可靠 |
| Current(最新版) | 尝鲜、测试新特性 | 不推荐用于正式项目 |
安装完成后,验证一下:
node --version
npm --version
看到版本号就说明装好了。npm是Node.js自带的包管理器,类似于Python的pip。
10.2.2 使用nvm管理多版本Node.js
如果你同时维护多个项目,每个项目要求的Node.js版本可能不一样。这时候nvm就派上用场了。
# 安装nvm(macOS/Linux)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
# 安装指定版本
nvm install 16.20.0
# 切换版本
nvm use 16.20.0
# 设置默认版本
nvm alias default 16.20.0
核心要点: 每个项目根目录下创建一个 .nvmrc 文件,写上版本号。这样团队成员进入项目时,执行 nvm use 就能自动切换到正确版本。这个习惯帮我省了不少时间。
10.3 Git版本控制:你的代码时光机
没有Git的项目,就像没有刹车的车。你永远不知道什么时候会翻车。我见过有人用「最终版」「最终版2」「打死不改版」来命名文件……嗯,那画面太美我不敢看。
10.3.1 基础配置与工作流
安装Git后,先做全局配置:
git config --global user.name "你的名字"
git config --global user.email "你的邮箱"
然后是最常用的工作流:
# 初始化仓库
git init
# 添加文件到暂存区
git add .
# 提交到本地仓库
git commit -m "feat: 初始化项目结构"
# 推送到远程仓库
git push origin main
为什么commit信息要写清楚? 你想想看,三个月后你回来看代码,看到「修复bug」这种信息,你根本想不起来修了什么。我习惯用 feat:、fix:、docs: 这样的前缀,一目了然。
10.3.2 分支管理策略
我个人推荐用Git Flow模型,但不用搞得太复杂。对于AI编程助手项目,我一般这样分:
- main:主分支,只放稳定版本
- dev:开发分支,日常开发都在这里
- feature/xxx:功能分支,开发新功能时从dev拉出来
- hotfix/xxx:紧急修复分支,从main拉出来
10.4 Docker容器化开发环境:一次构建,到处运行
Docker解决了一个经典问题:「在我电脑上能跑啊!」。容器化让你的开发环境与操作系统解耦,不管你是Windows、macOS还是Linux,跑起来都一样。
10.4.1 编写Dockerfile
对于AI编程助手项目,一个典型的Dockerfile长这样:
# 使用Python官方镜像
FROM python:3.10-slim
# 设置工作目录
WORKDIR /app
# 复制依赖文件
COPY requirements.txt .
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 复制项目代码
COPY . .
# 暴露端口
EXPOSE 8000
# 启动命令
CMD ["python", "main.py"]
为什么用slim版本? 完整版Python镜像有1GB多,slim版只有100MB左右。部署的时候,镜像越小,拉取越快。我在项目中把镜像从1.2GB优化到300MB,部署时间从5分钟缩短到30秒。
10.4.2 使用docker-compose管理多服务
如果你的项目需要同时跑Python后端、Node.js前端、Redis缓存、MySQL数据库,手动启动每个容器会疯掉的。这时候docker-compose就是救星。
version: '3.8'
services:
backend:
build: ./backend
ports:
- "8000:8000"
depends_on:
- redis
- db
frontend:
build: ./frontend
ports:
- "3000:3000"
redis:
image: redis:7-alpine
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root123
然后一行命令启动所有服务:
docker-compose up -d
10.5 总结:环境搭建的黄金法则
好了,四个工具都讲完了。最后给你三个原则:
- 隔离优先:Python用虚拟环境,Node.js用nvm,项目用Docker。别偷懒,每个项目独立环境。
- 版本锁定:所有依赖版本都写进配置文件(requirements.txt、package.json、Dockerfile),别用模糊版本号。
- 自动化:能用脚本解决的问题,别手动操作。写个setup.sh,一键搭建环境。
环境搭建好了,咱们下一章就开始真正写AI编程助手的代码了。到时候你会发现,前面这些准备工作,每一分钟都是值得的。