环境搭建:把工具箱备齐
说实话,很多自动化流程跑不起来,不是逻辑写错了,是环境没搭好。我以前带团队时就遇到过——新人花两天配环境,结果依赖冲突,项目都启动不了。所以这一章,我们先老老实实把地基打牢。
我会带你把三个核心部分配好:Python环境、数据库、以及核心依赖库。弄完这些,后面的批处理脚本才能稳稳跑起来。
Python环境选择与安装
我个人的习惯,永远先用虚拟环境。为什么?你想想看,不同项目可能依赖不同版本的 pandas,混在一起迟早出问题。
推荐用 Python 3.9 以上,我目前用 3.10。版本太老有些新语法不支持,太新又可能个别库没适配。
我的推荐组合:
- Python 3.10 + venv 或 conda
- 一个干净的虚拟环境专用于本项目
创建虚拟环境的命令很简单:
python -m venv qc_env
source qc_env/bin/activate # Linux/Mac
qc_env\Scripts\activate # Windows
看到命令行前出现 (qc_env),就说明环境已经激活了。嗯,这里要注意一点:每次打开新终端都要重新激活。我一开始老忘,后来写了个小脚本自动激活。
小技巧:把虚拟环境的路径加到 .gitignore 里,别提交到代码仓库。否则小伙伴拉下来还得删了重建。
数据库选型:SQLite 还是 PostgreSQL?
做批量质控,你得有个地方存结果。我个人通常这样选:
- 开发测试阶段:用 SQLite,零配置,文件即数据库
- 生产部署阶段:用 PostgreSQL,支持并发,性能更好
下面这张表可以帮你快速对比:
| 特性 | SQLite | PostgreSQL |
|---|---|---|
| 安装复杂度 | 无需安装 | 需要安装服务 |
| 并发写入 | 弱(单写) | 强(多写) |
| 适合场景 | 单机/小批量 | 团队/大批量 |
| 数据量上限 | 约 140TB(理论) | 几乎无限 |
我在项目中遇到过这种情况:用 SQLite 本地测得好好的,一上服务器就报数据库锁。后来换成 PostgreSQL 才解决。所以生产环境别犹豫,直接上 PostgreSQL。
安装 PostgreSQL 也很简单,Ubuntu 下一条命令:
sudo apt update
sudo apt install postgresql postgresql-contrib
然后创建一个数据库给我们的质控项目用:
sudo -u postgres psql -c "CREATE USER qc_user WITH PASSWORD 'your_password';"
sudo -u postgres psql -c "CREATE DATABASE batch_qc OWNER qc_user;"
注意:千万别把密码写在代码里。我习惯用环境变量或者 .env 文件加载。
核心依赖库安装
批量质控流程离不开几个关键库。我把它们整理成一份 requirements.txt,一条命令装完。
必备库清单
| 库名 | 版本建议 | 用途 |
|---|---|---|
| pandas | ≥1.5.0 | 数据读取、清洗、统计 |
| sqlalchemy | ≥2.0.0 | 数据库 ORM 操作 |
| psycopg2-binary | ≥2.9.0 | PostgreSQL 驱动 |
| openpyxl | ≥3.0.0 | Excel 读写(可选) |
| numpy | ≥1.24.0 | 数值计算 |
创建 requirements.txt 文件,写入以下内容:
pandas>=1.5.0
sqlalchemy>=2.0.0
psycopg2-binary>=2.9.0
openpyxl>=3.0.0
numpy>=1.24.0
然后一键安装:
pip install -r requirements.txt
看看安装结果。如果出现红色报错,八成是某个库的依赖冲突。我踩过的坑是 pandas 和 numpy 版本不匹配,解决办法是升级 numpy 到最新版。
验证环境是否就绪
环境搭好没,跑个简单脚本试试看:
import pandas as pd
import sqlalchemy
import psycopg2
print(f"pandas version: {pd.__version__}")
print(f"sqlalchemy version: {sqlalchemy.__version__}")
print(f"psycopg2 module: {psycopg2.__name__}")
# 试连一下 SQLite
engine = sqlalchemy.create_engine('sqlite:///test.db')
engine.connect()
print("数据库连接成功!")
如果能正常打印版本号,而且最后显示 "数据库连接成功!",那恭喜你,环境算是搭好了。
一张图看懂本章知识体系
我把这一章的内容画成了一张流程图,方便你理解整体结构:
常见问题与避坑
环境搭建过程中,你可能会遇到几个小问题。我帮你总结了一下:
常见的坑:
- 虚拟环境装了,但 IDE 没选对环境 —— 检查右下角 Python 解释器路径
- PostgreSQL 连不上 —— 多半是没启动服务,
sudo systemctl start postgresql - pandas 读取大文件慢 —— 别慌,后面章节会讲分批读取的优化方法
我记得有一次,一个同事花了一整天都没装好 psycopg2。原因是系统缺少 libpq-dev 库。解决办法:
sudo apt install libpq-dev
装完再 pip install,瞬间就好了。所以遇到编译报错,先看看是不是缺系统依赖。
一个小建议:每次装完依赖,跑一遍 pip freeze > requirements.txt 把精确版本号记下来。这样部署到服务器时就不会出现版本漂移的问题。
好,环境搭好了。接下来你就可以放心写代码了。记住,环境稳定是自动化流程跑得顺利的前提,别在这步省时间。