4、Python环境搭建:Python安装、虚拟环境创建、Jupyter Notebook配置、常用库安装

好,咱们正式开始动手了。这一章我带你搭开发环境。别小看这一步,我见过太多学员卡在环境配置上,代码写好了跑不起来,那叫一个憋屈。咱们一步步来,稳扎稳打。

4.1 Python安装——选对版本很重要

Python版本怎么选?我个人习惯用Python 3.8到3.10之间的版本。为什么?因为pyserial和某些科学计算库对太新的版本支持有时会慢半拍。我在项目中遇到过Python 3.11刚出来时,有个库死活装不上,折腾了半天。

去官网 python.org 下载安装包。Windows用户记得勾选「Add Python to PATH」,这个选项不勾,后面命令行里敲python会提示找不到命令。嗯,这里要注意,macOS或Linux用户一般自带Python,但版本可能偏旧,建议还是装个新的。

避坑指南:我曾经帮一个学员远程调试,他装了两个Python版本,结果pip指向了旧版本,新库全装到了旧环境里。建议只保留一个主力版本,或者用虚拟环境隔离。

4.2 虚拟环境创建——隔离才是王道

说白了,虚拟环境就是给你的每个项目一个独立的小房间。你在房间里装什么库都不会影响到别的项目。我刚开始做嵌入式数据采集时,一个项目用pyserial 2.7,另一个用3.0,没有虚拟环境的话,两个项目只能二选一。

创建虚拟环境很简单,打开终端或命令提示符:

# 创建虚拟环境,env_name可以换成你喜欢的名字
python -m venv env_name

# 激活虚拟环境
# Windows:
env_name\Scripts\activate
# macOS/Linux:
source env_name/bin/activate

激活后,命令行前面会出现 (env_name) 字样,说明你已经在虚拟环境里了。这时候安装的所有库都只在这个环境里生效。

小技巧:我习惯把虚拟环境建在项目文件夹里,取名就叫 .venv。这样项目拷贝到别的电脑,删掉 .venv 重新创建就行,不会把乱七八糟的依赖带过去。

4.3 Jupyter Notebook配置——交互式调试利器

做数据可视化,Jupyter Notebook是我的首选。为什么?因为它可以边写代码边看结果,调试传感器数据时特别方便。你想想看,串口读一组数据,马上就能画个波形图出来,多直观。

安装Jupyter:

# 在虚拟环境里安装
pip install jupyter

# 启动
jupyter notebook

启动后浏览器会自动打开一个页面,默认端口是8888。如果端口被占用,它会自动切换到8889。我个人习惯把notebook文件放在项目根目录,方便管理。

核心配置:Jupyter默认只允许本地访问。如果你需要远程访问(比如在树莓派上跑),需要修改配置文件。但咱们做传感器数据采集,本地用就够了。

4.4 常用库安装——numpy、pandas、matplotlib、pyserial

这四个库是咱们课程的核心工具。我按安装顺序列出来:

库名 用途 安装命令
numpy 数值计算,处理传感器数据数组 pip install numpy
pandas 数据处理,时间序列分析 pip install pandas
matplotlib 数据可视化,画电导率曲线 pip install matplotlib
pyserial 串口通信,读取传感器数据 pip install pyserial

你可以一次性安装:

pip install numpy pandas matplotlib pyserial

安装完成后,验证一下:

python -c "import numpy; import pandas; import matplotlib; import serial; print('所有库安装成功')"

如果没报错,恭喜你,环境搭好了。

注意:pyserial在Linux下可能需要权限才能访问串口。我曾经在树莓派上折腾了半天,最后发现是用户没加到dialout组。解决方法:sudo usermod -a -G dialout $USER,然后注销重新登录。

4.5 验证环境——跑个简单示例

环境搭好了,咱们跑个小例子试试。打开Jupyter Notebook,新建一个Python文件,输入:

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

# 模拟一组电导率数据
data = np.random.normal(500, 20, 100)
df = pd.DataFrame({'电导率(uS/cm)': data})

# 画个折线图
plt.plot(df.index, df['电导率(uS/cm)'])
plt.title('电导率模拟数据')
plt.xlabel('采样点')
plt.ylabel('电导率 (uS/cm)')
plt.show()

如果能看到一张折线图,说明你的环境完全OK。嗯,这里要注意,matplotlib第一次绘图时可能会慢一点,因为它在加载字体和渲染后端。

我的习惯:每次开始新项目,我都会先跑一遍这个验证脚本。不是不信任环境,而是确保所有库的版本兼容。有一次pandas升级后,我之前的代码报了个警告,虽然能跑,但看着不舒服。

好,环境搭建就到这里。下一章咱们开始真正和传感器打交道——用pyserial读取串口数据。准备好了吗?