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项目骨架。