第三章 开发环境搭建:Python虚拟环境配置、Django框架安装、PostgreSQL数据库配置、Redis缓存集成

好,咱们直接进入正题。这一章讲的是开发环境搭建,说白了就是给你的风电软件项目「铺路」。我见过太多新手,代码写得挺溜,结果环境配了一周还没跑起来——嗯,这种事我也干过。所以这一章,我会把每一步拆开揉碎了讲,顺便分享一些我踩过的坑。

3.1 Python虚拟环境:为什么必须用?

先问个问题:你电脑上是不是装了好几个Python项目?有的用Django 3.2,有的用4.0,还有的用Flask?如果不做隔离,这些依赖会互相打架。我当年第一个风电项目就吃过这个亏——升级了某个库,结果另一个项目直接崩了。

虚拟环境就是干这个的。它给每个项目一个独立的Python解释器和包管理空间。说白了,就是「各玩各的,互不干扰」。

3.1.1 创建虚拟环境

我个人习惯用 venv,Python 3.3+ 自带,不用额外装。命令很简单:

# 创建虚拟环境,命名为 venv
python -m venv venv

# 激活(Windows)
venv\Scripts\activate

# 激活(macOS/Linux)
source venv/bin/activate

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

小技巧: 我习惯把虚拟环境放在项目根目录下,取名 venv。这样 .gitignore 里直接写 venv/ 就能忽略掉,省心。

3.1.2 管理依赖

项目依赖用 requirements.txt 管理。生成和安装命令:

# 导出当前环境的所有包
pip freeze > requirements.txt

# 在新环境里一键安装
pip install -r requirements.txt

我曾经犯过一个错:直接 pip freeze > requirements.txt 把系统级的包也导进去了。结果同事一装,版本冲突到怀疑人生。所以记住:一定要在虚拟环境里操作

3.2 Django框架安装:选对版本很重要

Django 版本迭代挺快的。风电项目我建议用 LTS(长期支持)版本,比如 4.2.x 或 5.0.x。为什么?因为项目周期长,LTS 版本有 3 年安全更新,不用频繁升级。

# 安装 Django 4.2 LTS
pip install django==4.2.16

# 验证安装
python -m django --version

安装完,创建一个项目:

django-admin startproject windpower_project
cd windpower_project
python manage.py runserver

浏览器打开 http://127.0.0.1:8000,看到小火箭页面,说明 Django 跑起来了。

注意: 如果你用 Python 3.12+,Django 4.2 可能不兼容。我建议用 Python 3.10 或 3.11,稳定且兼容性好。别问我怎么知道的——我曾在 Python 3.12 上折腾了一下午。

3.3 PostgreSQL数据库配置:风电数据的「大本营」

风电项目的数据量不小。风速、功率、温度这些时序数据,一天就能攒几百万条。SQLite 肯定扛不住,PostgreSQL 才是正解。

3.3.1 安装与创建数据库

先确保 PostgreSQL 已安装。然后创建数据库和用户:

-- 登录 PostgreSQL
psql -U postgres

-- 创建数据库
CREATE DATABASE windpower_db;

-- 创建用户并授权
CREATE USER winduser WITH PASSWORD 'your_password';
GRANT ALL PRIVILEGES ON DATABASE windpower_db TO winduser;

3.3.2 Django 连接 PostgreSQL

需要安装 psycopg2 这个驱动:

pip install psycopg2-binary

然后在 Django 的 settings.py 里配置数据库:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'windpower_db',
        'USER': 'winduser',
        'PASSWORD': 'your_password',
        'HOST': 'localhost',
        'PORT': '5432',
    }
}

配置完,运行迁移测试:

python manage.py migrate

没有报错,说明数据库连上了。

避坑指南: 我曾经把密码直接写在 settings.py 里,结果不小心提交到了 Git 仓库。后来用环境变量管理敏感信息,比如 os.getenv('DB_PASSWORD')。记住:永远不要把密码硬编码

3.4 Redis缓存集成:给系统「提速」

风电系统里,有些数据查询频率极高,比如实时风速、设备状态。每次都查数据库,数据库会累死。Redis 就是用来扛这些高频读写的。

3.4.1 安装 Redis 与 Python 客户端

先确保 Redis 服务已启动。然后安装 django-redis

pip install django-redis

settings.py 里配置缓存:

CACHES = {
    'default': {
        'BACKEND': 'django_redis.cache.RedisCache',
        'LOCATION': 'redis://127.0.0.1:6379/1',
        'OPTIONS': {
            'CLIENT_CLASS': 'django_redis.client.DefaultClient',
        }
    }
}

这里 /1 表示使用 Redis 的 1 号数据库,避免和别的项目冲突。

3.4.2 在代码里用缓存

举个实际例子:查询某台风机的实时功率。如果每次都查数据库,压力很大。用缓存后,数据先存 Redis,下次直接读内存:

from django.core.cache import cache

def get_turbine_power(turbine_id):
    # 先从缓存取
    power = cache.get(f'turbine_power_{turbine_id}')
    if power is not None:
        return power
    
    # 缓存没有,查数据库
    power = Turbine.objects.get(id=turbine_id).power
    # 写入缓存,有效期 60 秒
    cache.set(f'turbine_power_{turbine_id}', power, 60)
    return power

你看,代码逻辑很简单。但效果很明显——数据库查询次数能减少 80% 以上。

个人经验: 缓存时间别设太长。风电数据变化快,我一般设 30-60 秒。太长了数据滞后,太短了缓存意义不大。这个值需要根据业务场景调优。

3.5 整体架构图:看看它们怎么配合

下面这张图,展示了 Django、PostgreSQL、Redis 三者的关系。我画了个简单的 SVG,方便你理解:

Django Web 框架 处理请求、业务逻辑 PostgreSQL 持久化存储 Redis 缓存 高速读写 读写数据 缓存读写 👤 用户 架构核心:Django 处理请求,PostgreSQL 存数据,Redis 扛高并发

这张图你看懂了吗?用户请求先到 Django,Django 根据需求决定:是去 PostgreSQL 查历史数据,还是去 Redis 读实时缓存。三者各司其职,系统才能跑得稳、跑得快。

3.6 环境验证:跑通才算完

配置完别急着写代码。先跑个简单的验证脚本,确保所有组件都通了:

# 验证 Django
python manage.py check

# 验证数据库连接
python manage.py dbshell

# 验证 Redis
redis-cli ping  # 返回 PONG 说明 Redis 正常

如果都通过了,恭喜你,开发环境搭建完成。这一步虽然枯燥,但基础打牢了,后面写代码才顺手。

最后说一句: 环境搭建是门「手艺活」。别嫌麻烦,也别跳过。我见过太多项目,后期因为环境不一致导致各种诡异 bug。你想想看,与其花一周排查环境问题,不如花一天把环境配好——这笔账,划算。

公众号:蓝海资料掘金营,微信deep3321