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确实方便。

注意: conda和pip混用时要小心。我曾经遇到过用conda装了一半依赖,又用pip装另一半,结果版本冲突,排查了半天。建议:尽量只用一种包管理器

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。

我的建议: 如果你是新手,先用PyCharm,它的集成度更高,不容易出错。等你熟悉了,再试试VSCode,你会发现另一种自由。

2.8 本章小结

这一章我们做了几件事:

  • 学会了用venv和conda创建虚拟环境
  • 掌握了requirements.txt和pipenv两种依赖管理方式
  • 安装了requests、pymysql、redis-py、kafka-python四个核心库
  • 配置了PyCharm和VSCode的开发环境

环境搭好了,后面就可以安心写代码了。下一章,咱们开始真正搭建数据采集的骨架——项目结构和配置管理。

嗯,准备好了吗?