Streamlit 完整介绍(2026 最新)

📅 2026/7/25 9:47:17
Streamlit 完整介绍(2026 最新)
Streamlit 是一个程序库能够让数据科学家快速搭建概念验证POC应用以及简易应用。 你无需使用 React.js 这类前端框架借助这个库就能高效完成全部开发工作。Streamlit 简要解读Streamlit 是面向 Python 的 Web 应用开源库定位就是数据科学家、分析师快速做可视化网页应用、POC 原型。 核心特点正如你所说不用学习前端HTML/CSS/JS、React/Vue 等只写 Python 就能产出交互式网页。核心优势开发成本极低常规方案Python 后端 React 前端 接口联调。 Streamlit纯 Python几行代码生成页面、图表、按钮、文件上传组件。import streamlit as st st.title(数据原型Demo) num st.slider(选择数值, 0, 100) st.write(f你选了{num})运行命令streamlit run app.py直接打开浏览器访问。天然适配数据栈原生兼容 Pandas、NumPy、Matplotlib、Plotly、Altair、PySpark、机器学习模型非常适合展示数据分析结果、模型演示。自动响应式交互页面组件发生变化时脚本默认从头重新执行不需要手动写事件回调降低交互开发门槛。适用场景 ✅算法 / 数据分析POC 概念验证、内部演示工具机器学习模型演示、特征调试面板小型内部业务简易工具、报表看板给非技术同事快速交付交互式数据工具局限性 ⚠️不适合面向大量公网用户的正式生产系统并发性能较弱页面刷新机制整段脚本重跑在复杂逻辑下容易低效。自定义 UI 自由度有限很难做到高度定制化、复杂布局想要精致商业界面不如前端框架灵活。状态管理比较简陋需要依靠st.session_state维护状态大型复杂应用写起来容易混乱。和你提到的 React 简单对比React专业前端框架适合正式产品、复杂交互、高并发学习曲线陡峭需要前后端分离架构。StreamlitPython 一站式快速原型工具牺牲一部分性能与定制能力换取极致开发速度优先服务数据人员主打快速验证想法。一、什么是 StreamlitStreamlit是一款开源 Python Web 应用框架主打纯 Python、零前端不用 HTML/CSS/JS几分钟把数据分析脚本变成可分享交互式网页。创立2019 年现已被Snowflake收购持续迭代目标人群数据分析师、算法工程师、科研人员、AI 开发者SloganTurn data scripts into shareable web apps in minutes.核心运行机制重中之重 用户拖动滑块、点击按钮、输入文字 →整个 Python 脚本从上到下完整重新执行一遍页面自动刷新。 这是它最简单、同时也是最容易踩坑的底层模型。二、优缺点✅ 优点极低学习门槛API 极度简洁会 Python 就能上手原生适配 Pandas、NumPy、Matplotlib、Plotly、PyTorch、LangChain内置大量 UI 组件表格、图表、文件上传、聊天框、侧边栏开发热重载保存代码浏览器自动刷新部署方案丰富本地局域网、Streamlit Cloud 免费托管、服务器 Docker 部署支持多页面应用、会话状态、缓存、表单、回调函数。❌ 局限性适合快速原型不适合大型生产系统全脚本重跑模型不加缓存极易出现重复加载数据、重复推理默认单进程不适合超高并发公网正式产品自定义前端样式麻烦复杂交互拖拽、实时协同、复杂动画实现困难浏览器每个标签独立会话会话状态不能跨标签共享免费云平台有访问时长、内存、休眠限制。三、典型适用场景✅ 适合数据探索仪表盘、可视化分析工具ML / 大模型 Demo、算法效果演示内部轻量业务工具、科研交互界面LangChain / Ollama 本地大模型 Web 聊天前端竞赛、项目快速演示原型❌ 不适合面向海量用户的商用正式网站需要复杂前端交互、高并发、实时长连接系统四、快速开始1. 安装pip install streamlit # 查看版本 streamlit --version # 官方示例演示 streamlit hello2. 最小示例 app.pyimport streamlit as st # 页面全局配置必须放在脚本最顶部 st.set_page_config(page_titleDemo, layoutwide) st.title(第一个Streamlit应用) name st.text_input(请输入名字) num st.slider(选择数字, min_value0, max_value100) st.write(f你好 {name}选中数字{num})3. 启动运行streamlit run app.py # 指定端口 streamlit run app.py --server.port 8502启动后两个地址http://localhost:8501本机访问http://192.168.x.x:8501同一局域网手机 / 其他电脑访问五、核心 API 分类常用大全1文本与排版st.title(大标题) st.header(一级标题) st.subheader(二级标题) st.markdown(**加粗** *斜体* [链接](https://streamlit.io)) st.latex(rEmc^2) # 数学公式 st.code(import streamlit as st, languagepython) st.divider() # 分割线 st.write(万能输出函数支持文本、df、图表)2交互输入组件Widgets# 文本 text st.text_input(单行输入) area st.text_area(多行文本) # 数字 val st.number_input(数字输入, min_value0, max_value1000) slide st.slider(滑动条, 0, 100, 50) # 选择 sel st.selectbox(下拉单选, [A,B,C]) multi st.multiselect(多选, [选项1,选项2]) check st.checkbox(复选框) radio st.radio(单选按钮, [是,否]) # 文件 upload_file st.file_uploader(上传文件, type[csv,xlsx]) # 按钮与回调 def click_func(): st.info(按钮被点击) st.button(点击我, on_clickclick_func)3布局控制# 侧边栏所有组件前面加 st.sidebar st.sidebar.title(侧边设置) s_val st.sidebar.slider(侧边滑块, 0, 10) # 多列布局 col1, col2 st.columns([2,1]) # 宽度比例2:1 with col1: st.dataframe(df) with col2: st.metric(指标, value100, delta5) # 空白占位动态刷新内容 placeholder st.empty() placeholder.info(后续可以覆盖此处内容)4数据与图表展示import pandas as pd df pd.DataFrame({a:[1,2,3],b:[4,5,6]}) st.dataframe(df) # 交互式可排序表格 st.table(df) # 静态表格 st.metric(销售额, 999, delta33) # 内置简易图表 st.line_chart(df) st.bar_chart(df) st.area_chart(df) # 支持第三方图表 import plotly.express as px fig px.scatter(df, xa, yb) st.plotly_chart(fig)5消息、等待组件st.info(提示信息) st.success(成功) st.warning(警告) st.error(错误) # 耗时操作加载动画 with st.spinner(计算中请稍候...): import time time.sleep(2) st.success(完成) progress st.progress(0)6聊天界面新版原生支持with st.chat_message(user): st.write(你好) with st.chat_message(assistant): st.write(我是AI助手) prompt st.chat_input(输入消息...)六、三大高级核心机制【进阶必学】1. 缓存 Cache解决重复执行痛点每次交互重跑脚本加载大文件、训练、API 请求会重复执行使用缓存装饰器。st.cache_data最常用适合返回可序列化数据DataFrame、列表、字符串、API 结果st.cache_data(ttl3600) # ttl缓存有效期单位秒 def load_csv(): df pd.read_csv(data.csv) return df df load_csv()st.cache_resource适合不可序列化的长连接 / 模型对象数据库连接、LLM 模型、Ollama 实例、大权重模型st.cache_resource def get_llm(): from langchain_ollama import OllamaLLM return OllamaLLM(modelqwen2.5) model get_llm()不要使用旧版st.cache已经废弃2. Session State 会话状态保存变量每次重跑脚本普通变量会重置st.session_state用于保存当前浏览器会话的变量。# 初始化 if count not in st.session_state: st.session_state.count 0 if st.button(1): st.session_state.count 1 st.write(计数, st.session_state.count) # 两种读写方式 st.session_state[key] 123 st.session_state.key 123搭配按钮on_click回调函数实现复杂状态逻辑。3. 多页面应用 Multipage目录结构自动生成左侧导航栏main.py # 首页 pages/ 01_数据概览.py 02_模型预测.py 03_聊天机器人.py直接运行streamlit run main.py自动识别 pages 文件夹。七、部署方案汇总方案 1本地局域网分享最简单启动后把 Network URL 发给局域网内同事。方案 2Streamlit Community Cloud免费首选条件GitHub 账号 流程代码上传 GitHub 仓库新建requirements.txt写明所有依赖登录 share.streamlit.io关联仓库一键部署限制长时间无访问应用会休眠内存有限公开应用无法放敏感密钥。方案 3云服务器部署阿里云 / 腾讯云常用方式直接后台运行 PM2 进程守护Docker 容器打包搭配 Nginx 反向代理、域名、HTTPS。方案 4Snowflake Streamlit企业付费私有化、私有应用、数据库原生打通适合企业场景。八、常见踩坑清单st.set_page_config()必须脚本第一行前面不能有任何输出组件 label、key 不能随意修改否则控件状态重置循环内动态创建控件务必指定唯一key敏感 API 密钥不要硬编码代码使用环境变量大文件上传上限默认较小可修改.streamlit/config.toml调大不要在循环里大量使用st.empty()频繁刷新容易卡顿免费云平台尽量把模型加载放入st.cache_resource避免每次唤醒重加载。九、同类框架横向简单对比表格框架定位特点Streamlit数据仪表盘、分析原型开发最快脚本重跑模型适合数据分析GradioAI 模型演示主打机器学习推理、接口分享适合模型快速展示Plotly Dash企业交互式仪表板偏传统前端组件学习曲线更高并发优于 StreamlitPanel灵活数据应用介于 Streamlit 与 Dash 之间支持异步