1. 什么是 Streamlit?
在数据科学和机器学习项目中,我们经常需要将分析结果或模型封装成可视化的 Web 界面。然而,传统的 Web 开发(如 Django、Flask)不仅需要编写后端逻辑,还需要掌握 HTML、CSS 和 JavaScript 等前端技术。
Streamlit 是一个开源的 Python 库,专为数据工程师及机器学习工程师设计。它允许开发者完全使用 Python 代码,在短时间内构建出美观、交互性强的 Web 应用程序,无需编写任何前端代码。
官方网站:https://streamlit.io/
2. 安装与运行
Streamlit 的安装和运行过程非常简便。
2.1 安装 Streamlit
打开终端或命令行,运行安装命令进行安装。
pip install streamlit
2.2 运行 Streamlit 应用
编写好 Python 代码(例如命名为 app.py)后,在终端中执行运行命令即可启动本地服务。
streamlit run app.py
启动后,系统会自动在浏览器中打开一个地址(通常是 http://localhost:8501),即可实时查看和交互。
3. Streamlit 常用 API 汇总
为了方便快速查阅,下表整理了 Streamlit 的基础页面配置及常见组件分类:
| 页面配置 | st.set_page_config | 配置页面标题、图标、布局模式及菜单项等 |
| 文本渲染 | st.title, st.header, st.subheader, st.write | 用于展示不同层级的标题、副标题及普通文本/Markdown |
| 媒体展示 | st.image, st.audio, st.video, st.logo | 用于在页面中嵌入图片、音频、视频以及站点 Logo |
| 数据展示 | st.table | 展示静态表格数据 |
| 交互控件 | st.button, st.text_input, st.checkbox, st.radio, st.selectbox | 按钮、输入框、复选框、单选框及下拉选择框等 |
4. 完整代码示例
以下代码展示了如何使用上述组件构建一个基础的 Web 应用。您可以将此代码保存为 app.py 并运行。
import streamlit as st
# 设置页面布局
st.set_page_config(
page_title="Ex-stream-ly Cool App", # 页面标题
page_icon="🧊", # 页面图标
layout="wide", # 页面布局
initial_sidebar_state="expanded", # 侧边栏状态
menu_items={
'Get Help': 'https://www.extremelycoolapp.com/help', # 帮助链接
'Report a bug': "https://www.extremelycoolapp.com/bug", # 报告bug链接
'About': "# This is a header. This is an *extremely* cool app!" # 关于链接
}
)
# 大标题
st.title("Streamlit 入门演示")
st.header("Streamlit 一级标题")
st.subheader("Streamlit 二级标题")
# 段落文字
st.write("这是一个段落文字")
st.write("这是一个段落文字1")
# 图片
st.image("https://www.171host.com/wp-content/uploads/2026/09/20260905205423-6a9c817f3818f.png")
# 音频
st.audio("https://www.baidu.com/audio/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.mp3")
# 视频
st.video("https://www.baidu.com/video/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.mp4")
# logo
st.logo("https://www.baidu.com/logo/PCtm_d9c8750bed0b3c7d089fa7d55720d6cf.png")
# 表格
student_data ={
"name":["张三","李四","王五"],
"age":[18,20,22],
"score":[90,85,95]
}
st.table(student_data)
# 按钮
if st.button("点击我"):
st.write("你点击了按钮")
# 输入框
name = st.text_input("请输入你的名字")
st.write(f"你好,{name}")
# 密码输入框
password = st.text_input("请输入你的密码", type="password")
st.write(f"你好,{password}")
# 多选框
if st.checkbox("请选择你的性别"):
st.write("你选择了性别")
# 单选框
if st.radio("请选择你的性别",["男","女"]):
st.write("你选择了性别")
# 下拉框
if st.selectbox("请选择你的性别",["男","女"]):
st.write("你选择了性别")
5. 核心代码原理解析
5.1 页面初始化配置
st.set_page_config 函数用于定义整个页面的基本属性。合理配置该函数可以提升应用的用户体验:
- layout="wide":将页面调整为宽屏模式,适合展示大尺寸表格和图表。
- menu_items:自定义右上角菜单中的选项,便于添加帮助文档或项目说明。
5.2 数据流动与状态更新
Streamlit 的核心运行机制是自上而下运行。当用户在界面上进行交互(例如点击按钮、输入文本或切换单选框)时,整个 Python 脚本会重新从头到尾执行一次。Streamlit 内部会处理状态的保留,确保更新后的变量值能够在页面上正确呈现。
6. 总结
Streamlit 提供了一种简单直观的方式,让 Python 开发者能够快速搭建交互式 Web 界面。通过其丰富的内置组件,您可以专注于数据处理和业务逻辑,而不必耗费精力在前端布局与通信上。对于原型设计、内部工具开发以及机器学习模型演示,Streamlit 是一个值得尝试的工具。





