2. 开发环境搭建:Python虚拟环境配置、Docker环境搭建、Git版本控制初始化
好,咱们正式开始动手了。这一章我带你搭好开发环境。别小看这一步,我见过太多项目后期出问题,根源就是环境没弄好。说白了,环境搭得稳,后面才能跑得快。
2.1 Python虚拟环境:隔离才是王道
为什么要用虚拟环境?你想想看,一个项目用Django 3.2,另一个用Django 4.0,装在一起不就打架了吗?虚拟环境就是给每个项目一个独立的Python解释器空间。
2.1.1 使用venv创建虚拟环境
Python 3.3以上自带venv模块,不用额外安装。我个人习惯在项目根目录下创建虚拟环境。
# 创建虚拟环境
python -m venv venv
# 激活虚拟环境(Windows)
venv\Scripts\activate
# 激活虚拟环境(macOS/Linux)
source venv/bin/activate
# 退出虚拟环境
deactivate
激活后,你会看到命令行前面多了个 (venv) 标记。嗯,看到它就说明环境隔离成功了。
我的习惯:把虚拟环境文件夹命名为
venv,并加入 .gitignore。这样既统一,又不会把一堆依赖文件提交到仓库。
2.1.2 管理项目依赖
依赖管理是项目工程化的基本功。我建议用 requirements.txt 来锁定依赖版本。
# 生成依赖清单
pip freeze > requirements.txt
# 从清单安装依赖
pip install -r requirements.txt
来看一个电商项目的典型依赖文件长什么样:
Django==4.2.0
djangorestframework==3.14.0
mysqlclient==2.2.0
redis==5.0.0
celery==5.3.0
django-cors-headers==4.0.0
Pillow==10.0.0
requests==2.31.0
避坑指南:我曾经在项目上线前发现依赖版本不一致,导致接口报错。后来我养成了一个习惯——每次部署前都重新生成
requirements.txt,确保环境一致。
2.2 Docker环境搭建:一次构建,到处运行
Docker解决了「在我电脑上能跑啊」这个世纪难题。说白了,就是把整个运行环境打包成一个镜像,到哪都能跑。
2.2.1 安装Docker
不同系统的安装方式不一样,我列个表方便你对照:
| 操作系统 | 安装方式 | 验证命令 |
|---|---|---|
| Windows | Docker Desktop for Windows | docker --version |
| macOS | Docker Desktop for Mac | docker --version |
| Linux (Ubuntu) | sudo apt install docker.io |
sudo docker run hello-world |
2.2.2 编写Dockerfile
Dockerfile就是构建镜像的配方。我拿电商项目举个例子:
# 基于Python 3.11镜像
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 复制依赖文件
COPY requirements.txt .
# 安装依赖
RUN pip install --no-cache-dir -r requirements.txt
# 复制项目代码
COPY . .
# 暴露端口
EXPOSE 8000
# 启动命令
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
2.2.3 使用docker-compose编排多服务
电商项目通常需要多个服务配合:Django应用、MySQL数据库、Redis缓存。用docker-compose可以一键启动所有服务。
version: '3.8'
services:
web:
build: .
ports:
- "8000:8000"
depends_on:
- db
- redis
environment:
- DB_HOST=db
- REDIS_HOST=redis
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: ecommerce
volumes:
- mysql_data:/var/lib/mysql
redis:
image: redis:7-alpine
volumes:
mysql_data:
启动命令:
docker-compose up -d 后台启动所有服务。docker-compose down 停止并清理。
2.3 Git版本控制初始化:给项目上保险
Git是程序员的后悔药。没有Git的项目,就像没有刹车的车——你敢开吗?
2.3.1 初始化仓库
# 在项目根目录初始化
git init
# 添加所有文件到暂存区
git add .
# 首次提交
git commit -m "feat: 初始化电商项目"
2.3.2 配置.gitignore
有些文件不该进版本控制。我整理了一份电商项目的标准忽略清单:
# Python
__pycache__/
*.py[cod]
venv/
*.egg-info/
# Django
*.sqlite3
media/
staticfiles/
# IDE
.vscode/
.idea/
*.swp
# Docker
.env
# OS
.DS_Store
Thumbs.db
我的经验:把
.env 文件加入忽略清单,里面存的是数据库密码、密钥等敏感信息。我见过有人把密钥提交到GitHub,结果被爬虫扫到,服务器直接被入侵。
2.3.3 分支管理策略
团队协作时,分支管理很重要。我推荐用Git Flow的简化版:
- main:生产分支,只合并不直接开发
- develop:开发主分支,日常开发的基础
- feature/*:功能分支,比如
feature/user-login - hotfix/*:紧急修复分支
# 创建并切换到开发分支
git checkout -b develop
# 创建功能分支
git checkout -b feature/user-cart
# 合并到开发分支
git checkout develop
git merge feature/user-cart
2.3.4 提交信息规范
好的提交信息让人一目了然。我习惯用这种格式:
类型(范围): 简短描述
- feat: 新功能
- fix: 修复bug
- docs: 文档更新
- refactor: 重构
- chore: 杂项(构建、依赖等)
举个例子:
feat(cart): 实现购物车添加商品功能
fix(order): 修复订单金额计算精度问题
docs(readme): 更新部署说明
避坑指南:我曾经在一个项目里看到提交信息全是「update」「fix」「修改」,根本不知道改了啥。后来我强制团队用规范格式,代码审查效率提升了不少。
2.4 环境验证:确保一切就绪
搭完环境后,跑个验证脚本确认一切正常:
# 验证Python虚拟环境
python --version # 应该显示 3.11.x
# 验证Docker
docker --version # 应该显示 24.x.x
# 验证Git
git --version # 应该显示 2.x.x
# 验证依赖安装
pip list | grep Django # 应该显示 4.2.0
如果所有命令都正常输出,恭喜你,开发环境搭建完成!
总结一下:这一章我们搞定了三件事——Python虚拟环境隔离了项目依赖,Docker让环境可移植,Git给代码上了版本保险。这三样东西,是电商项目工程化的基石。下一章,咱们开始搭建Django项目骨架。