2、环境搭建与第一个应用:安装Python、Streamlit及常用数据科学库
工欲善其事,必先利其器。对于数据科学Web应用开发而言,一个干净、可复现且易于管理的开发环境是后续所有工作的基石。本章将引导你从零开始,完成Python解释器、Streamlit框架以及Pandas、NumPy、Matplotlib等常用数据科学库的安装与配置,并最终创建并运行你的第一个Streamlit应用。我们将重点剖析环境搭建的核心原理、虚拟环境的使用方法,以及Streamlit应用的基本工作流程,帮助你建立起对开发全链路的清晰认知。
上图展示了本章的核心内容框架:从Python基础环境出发,依次安装数据科学库与Streamlit框架,最终通过streamlit run命令驱动一个完整的Web应用运行链路。下面我们将逐一深入每个环节。
2.1 核心原理:为什么需要虚拟环境与依赖管理
在Python生态中,不同项目可能依赖不同版本的第三方库。例如,项目A需要Pandas 1.5,而项目B需要Pandas 2.0,如果直接在全局环境中安装,后安装的版本会覆盖先前的版本,导致项目A无法运行。虚拟环境(Virtual Environment)正是为了解决这一问题而设计的。
虚拟环境本质上是一个独立的目录,其中包含独立的Python解释器、pip工具以及第三方库副本。通过激活虚拟环境,你可以将项目的依赖隔离在特定目录中,避免全局环境污染。对于Streamlit开发,我们强烈建议使用虚拟环境,原因有三:
- 依赖隔离:不同项目可以使用不同版本的Streamlit、Pandas等,互不干扰。
- 可复现性:通过
requirements.txt文件锁定依赖版本,团队协作或部署时能精确还原环境。 - 安全性:避免因全局环境权限问题导致的安装失败,也减少了对系统Python的意外修改。
Python 3.3+内置了venv模块,无需额外安装即可创建虚拟环境。此外,Anaconda或Miniconda提供的conda命令也能创建虚拟环境,且对数据科学库的版本管理更为友好。本章以venv为主,兼顾conda的替代方案。
2.2 操作流程:从零搭建开发环境
以下是完整的操作流程,适用于Windows、macOS和Linux系统。请根据你的操作系统选择对应的命令。
步骤一:安装Python
- 访问 Python官网,下载Python 3.9及以上版本的安装包(推荐3.10或3.11,Streamlit对3.12的支持也已完善)。
- 安装时务必勾选 "Add Python to PATH" 选项,否则后续命令行无法直接调用
python命令。 - 安装完成后,打开终端(Windows为CMD或PowerShell,macOS/Linux为Terminal),输入以下命令验证安装:
python --version
pip --version
如果输出类似 Python 3.11.5 和 pip 23.2.1 的信息,说明安装成功。
步骤二:创建并激活虚拟环境
在项目根目录下执行以下命令(假设项目目录名为 streamlit_app):
# 创建虚拟环境(Windows/macOS/Linux通用)
python -m venv .venv
# 激活虚拟环境
# Windows (CMD/PowerShell)
.venv\Scripts\activate
# macOS/Linux (bash/zsh)
source .venv/bin/activate
激活后,终端提示符前会出现 (.venv) 前缀,表示当前处于虚拟环境中。此时执行pip安装的包都会进入该环境。
步骤三:安装Streamlit及常用数据科学库
使用pip一次性安装所有依赖:
pip install streamlit pandas numpy matplotlib seaborn plotly scikit-learn
为了确保版本兼容,建议安装完成后生成依赖清单文件:
pip freeze > requirements.txt
该文件记录了当前环境中所有包及其精确版本号,是项目可复现的关键。
步骤四:验证安装
在终端中执行以下命令,检查Streamlit是否安装成功:
streamlit version
如果输出类似 Streamlit, version 1.36.0 的信息,说明安装成功。你也可以运行 streamlit hello 启动内置的演示应用,体验Streamlit的交互效果。
2.3 案例拆解:创建并运行第一个Hello World应用
下面我们通过一个完整的案例,演示从编写代码到运行应用的全过程。这个案例将包含一个简单的数据展示页面,并引入交互组件。
案例背景与目标
假设你是一名数据分析师,需要快速向业务团队展示一份销售数据的统计摘要。你希望团队成员能通过浏览器访问一个网页,查看数据表格、关键指标和图表,而无需安装任何Python环境。Streamlit正是解决这一需求的理想工具。
操作步骤
- 创建项目文件:在项目目录下新建
app.py文件。 - 编写代码:使用文本编辑器(如VS Code、PyCharm)输入以下内容:
import streamlit as st
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 设置页面标题
st.title("📊 销售数据看板")
# 生成模拟数据
np.random.seed(42)
data = pd.DataFrame({
"月份": pd.date_range("2024-01-01", periods=12, freq="M").strftime("%Y-%m"),
"销售额": np.random.randint(100, 500, size=12),
"利润": np.random.randint(20, 150, size=12)
})
# 显示数据表格
st.subheader("原始数据")
st.dataframe(data)
# 显示关键指标
col1, col2, col3 = st.columns(3)
col1.metric("总销售额", f"{data['销售额'].sum()} 万")
col2.metric("平均利润", f"{data['利润'].mean():.1f} 万")
col3.metric("最高销售额", f"{data['销售额'].max()} 万")
# 绘制折线图
st.subheader("销售趋势")
fig, ax = plt.subplots()
ax.plot(data["月份"], data["销售额"], marker="o", label="销售额")
ax.plot(data["月份"], data["利润"], marker="s", label="利润")
ax.set_xlabel("月份")
ax.set_ylabel("金额(万元)")
ax.legend()
st.pyplot(fig)
# 添加交互控件
st.subheader("数据筛选")
threshold = st.slider("最低销售额", min_value=100, max_value=500, value=200)
filtered_data = data[data["销售额"] >= threshold]
st.write(f"筛选后共 {len(filtered_data)} 条记录")
st.dataframe(filtered_data)
- 运行应用:在终端中执行以下命令:
streamlit run app.py
Streamlit会自动打开默认浏览器,访问 http://localhost:8501,你将看到完整的应用界面。
结果与复盘
应用成功运行后,你可以观察到以下现象:
- 页面顶部显示标题,下方依次展示数据表格、指标卡片和图表。
- 拖动滑块时,页面会实时刷新,筛选后的数据表格随之更新。
- 在终端中,Streamlit会输出访问地址和运行日志,方便调试。
这个案例展示了Streamlit的核心工作流程:Python脚本 → 浏览器渲染 → 交互反馈。你只需编写纯Python代码,Streamlit自动处理HTML、CSS和JavaScript的生成,极大降低了Web开发门槛。
2.4 常见误区与总结复盘
在环境搭建和第一个应用开发过程中,初学者常会遇到以下问题,我们逐一分析并提供解决方案。
| 常见误区 | 现象描述 | 解决方案 |
|---|---|---|
| 未激活虚拟环境 | 安装的包出现在全局环境中,项目间依赖冲突 | 每次打开终端后,先执行 source .venv/bin/activate(Windows为 .venv\Scripts\activate) |
| Python未加入PATH | 终端输入 python 提示“不是内部或外部命令” |
重新安装Python并勾选“Add to PATH”,或手动配置系统环境变量 |
| 端口被占用 | 运行 streamlit run 时提示端口8501已被使用 |
使用 streamlit run app.py --server.port 8502 指定其他端口 |
| 依赖版本不兼容 | 导入Pandas或Matplotlib时报错,如 ImportError |
使用 pip install --upgrade 升级包,或根据 requirements.txt 重新安装 |
| 代码修改后页面不更新 | 浏览器仍显示旧内容 | 检查终端是否有报错信息;确认文件已保存;Streamlit默认开启热重载,若未生效可手动刷新浏览器 |
sudo pip install(Linux/macOS)或管理员权限安装Python包,这可能导致系统Python环境损坏。始终在虚拟环境中操作。
requirements.txt 并纳入版本控制(如Git),每次安装新包后及时更新该文件。这能确保团队成员或部署服务器快速复现环境。