2、Python基础回顾与环境搭建:Python虚拟环境创建(venv/conda)、依赖管理(requirements.txt/pipenv)、常用库安装(requests、pymysql、redis-py、kafka-python)、IDE配置(PyCharm/VSCode)
好,咱们正式开始动手了。
这一章,说白了就是“磨刀不误砍柴工”。你想想看,一个数据采集系统,后面要对接MySQL、Redis、Kafka,还要写爬虫、做调度。如果Python环境乱成一锅粥,那后面有你哭的。
我刚开始带团队的时候,就吃过这个亏。项目做到一半,发现依赖冲突,一升级库,整个项目跑不起来了。嗯,从那以后,我养成了一个习惯——每个项目,必须用虚拟环境隔离。
2.1 为什么需要虚拟环境?
简单说,虚拟环境就是给你的每个项目一个“独立的小房间”。
- 项目A用requests 2.25,项目B用requests 2.30,互不干扰。
- 不会出现“我装了个新库,老项目挂了”的惨剧。
- 方便迁移和部署——你只需要把依赖列表带走就行。
我个人习惯,不管项目大小,上来先建虚拟环境。这就像写代码前先写注释一样,是个好习惯。
2.2 使用venv创建虚拟环境
Python 3.3+自带venv,不需要额外安装。这是最轻量的方式。
# 创建虚拟环境(在项目根目录下执行)
python -m venv venv
# 激活虚拟环境
# Windows:
venv\Scripts\activate
# macOS/Linux:
source venv/bin/activate
# 退出虚拟环境
deactivate
激活后,你会看到命令行前面多了个 (venv) 标记。这就说明你已经在“小房间”里了。
venv,并且加到 .gitignore 里。这样既统一,又不会把一堆依赖文件传到Git上。
2.3 使用conda创建虚拟环境
如果你做数据分析或者机器学习,conda会更顺手。它能管理Python版本,还能装一些非Python的底层库。
# 创建虚拟环境(指定Python版本)
conda create -n data_collect python=3.9
# 激活
conda activate data_collect
# 退出
conda deactivate
# 查看所有环境
conda env list
# 删除环境
conda remove -n data_collect --all
我个人在数据采集项目中,更倾向于用venv。因为采集系统依赖相对简单,venv更轻量,部署时也少一些麻烦。但如果你同时做数据处理,conda确实方便。
2.4 依赖管理:requirements.txt
这是最经典、最通用的方式。你只需要一个文本文件,列出所有依赖。
# 生成当前环境的依赖列表
pip freeze > requirements.txt
# 在另一台机器上安装所有依赖
pip install -r requirements.txt
requirements.txt的内容大概长这样:
requests==2.28.1
pymysql==1.0.2
redis==4.5.4
kafka-python==2.0.2
pandas==1.5.3
这里有个坑——pip freeze 会把所有依赖都列出来,包括一些间接依赖。我建议你手动整理一下,只保留直接依赖,并注明版本。这样别人看你的文件,一眼就知道项目用了哪些核心库。
requirements.txt,并且每次新增或更新依赖后,及时更新这个文件。我一般会在代码提交前跑一遍 pip freeze 检查一下。
2.5 依赖管理:pipenv(更现代的方式)
pipenv 结合了 Pipfile 和 Pipfile.lock,能自动管理依赖和虚拟环境。
# 安装pipenv
pip install pipenv
# 初始化虚拟环境并安装依赖
pipenv install requests pymysql redis kafka-python
# 激活虚拟环境
pipenv shell
# 生成requirements.txt(方便部署)
pipenv lock -r > requirements.txt
pipenv 的好处是自动生成锁定文件,确保每次安装的版本完全一致。但说实话,我在团队协作中还是更常用 requirements.txt,因为大家更熟悉,CI/CD流程也更好配置。
2.6 常用库安装
咱们这个数据采集系统,核心依赖就这几个。我一个个说。
2.6.1 requests——HTTP请求库
爬虫和API调用的主力。简单、稳定、文档好。
pip install requests
用法示例:
import requests
response = requests.get('https://api.example.com/data')
if response.status_code == 200:
data = response.json()
print(data)
我在项目中遇到过一个问题:某些接口返回的数据编码不对,导致乱码。后来发现加个 response.encoding = 'utf-8' 就解决了。嗯,细节决定成败。
2.6.2 pymysql——MySQL数据库驱动
Python连接MySQL的标配。纯Python实现,兼容性好。
pip install pymysql
用法示例:
import pymysql
connection = pymysql.connect(
host='localhost',
user='root',
password='123456',
database='data_collect'
)
with connection.cursor() as cursor:
cursor.execute('SELECT * FROM tasks')
results = cursor.fetchall()
for row in results:
print(row)
connection.commit(),结果数据一直没写进去。记住:增删改操作后,一定要commit。
2.6.3 redis-py——Redis客户端
用来做缓存、消息队列、去重等。咱们后面会大量用到。
pip install redis
用法示例:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('key', 'value')
print(r.get('key')) # 输出 b'value'
注意:redis-py默认返回的是字节串,记得用 .decode() 转成字符串。
2.6.4 kafka-python——Kafka客户端
用来对接消息队列,实现数据流的解耦和缓冲。
pip install kafka-python
用法示例:
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers='localhost:9092')
producer.send('data_topic', b'hello kafka')
producer.flush()
这里要注意:kafka-python 和 confluent-kafka 是两个不同的库。前者纯Python实现,后者基于C,性能更好。咱们课程先用kafka-python,方便理解原理。
2.7 IDE配置:PyCharm与VSCode
工欲善其事,必先利其器。我两个IDE都用过,各有千秋。
2.7.1 PyCharm配置
- 创建项目时直接选虚拟环境: New Project → 选择 Existing interpreter → 选你刚创建的venv。
- 安装依赖: 在Terminal里直接
pip install,或者用 Settings → Project → Python Interpreter → 点加号搜索安装。 - 代码检查: PyCharm自带PEP8检查,非常方便。我一般会开启“在保存时自动格式化”。
我个人觉得PyCharm适合大型项目,尤其是需要调试和重构的时候。但启动确实慢了点。
2.7.2 VSCode配置
- 选择Python解释器: Ctrl+Shift+P → Python: Select Interpreter → 选你虚拟环境里的python.exe。
- 推荐插件:
- Python(微软官方)
- Pylance(代码补全和类型检查)
- Jupyter(如果要做数据分析)
- 终端集成: 直接在VSCode里打开终端,自动激活虚拟环境(如果配置了的话)。
VSCode轻量、启动快,插件生态丰富。我现在写小脚本和调试时,基本都用VSCode。
2.8 本章小结
这一章我们做了几件事:
- 学会了用venv和conda创建虚拟环境
- 掌握了requirements.txt和pipenv两种依赖管理方式
- 安装了requests、pymysql、redis-py、kafka-python四个核心库
- 配置了PyCharm和VSCode的开发环境
环境搭好了,后面就可以安心写代码了。下一章,咱们开始真正搭建数据采集的骨架——项目结构和配置管理。
嗯,准备好了吗?