news 2026/7/25 9:47:11

Streamlit 完整介绍(2026 最新)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Streamlit 完整介绍(2026 最新)

Streamlit 是一个程序库,能够让数据科学家快速搭建概念验证(POC)应用以及简易应用。 你无需使用 React.js 这类前端框架,借助这个库就能高效完成全部开发工作。

Streamlit 简要解读

Streamlit 是面向 Python 的 Web 应用开源库,定位就是数据科学家、分析师快速做可视化网页应用、POC 原型。 核心特点正如你所说:不用学习前端(HTML/CSS/JS、React/Vue 等),只写 Python 就能产出交互式网页

核心优势

  1. 开发成本极低常规方案:Python 后端 + React 前端 + 接口联调。 Streamlit:纯 Python,几行代码生成页面、图表、按钮、文件上传组件。

    import streamlit as st st.title("数据原型Demo") num = st.slider("选择数值", 0, 100) st.write(f"你选了:{num}")

    运行命令:streamlit run app.py,直接打开浏览器访问。

  2. 天然适配数据栈原生兼容 Pandas、NumPy、Matplotlib、Plotly、Altair、PySpark、机器学习模型,非常适合展示数据分析结果、模型演示。
  3. 自动响应式交互页面组件发生变化时,脚本默认从头重新执行,不需要手动写事件回调,降低交互开发门槛。

适用场景 ✅

  • 算法 / 数据分析POC 概念验证、内部演示工具
  • 机器学习模型演示、特征调试面板
  • 小型内部业务简易工具、报表看板
  • 给非技术同事快速交付交互式数据工具

局限性 ⚠️

  1. 不适合面向大量公网用户的正式生产系统并发性能较弱;页面刷新机制(整段脚本重跑)在复杂逻辑下容易低效。
  2. 自定义 UI 自由度有限很难做到高度定制化、复杂布局;想要精致商业界面不如前端框架灵活。
  3. 状态管理比较简陋需要依靠st.session_state维护状态,大型复杂应用写起来容易混乱。

和你提到的 React 简单对比

  • React:专业前端框架,适合正式产品、复杂交互、高并发,学习曲线陡峭,需要前后端分离架构。
  • Streamlit:Python 一站式快速原型工具,牺牲一部分性能与定制能力,换取极致开发速度,优先服务数据人员,主打快速验证想法

一、什么是 Streamlit

Streamlit是一款开源 Python Web 应用框架,主打:纯 Python、零前端(不用 HTML/CSS/JS),几分钟把数据分析脚本变成可分享交互式网页

  • 创立:2019 年,现已被Snowflake收购,持续迭代;
  • 目标人群:数据分析师、算法工程师、科研人员、AI 开发者;
  • Slogan:Turn data scripts into shareable web apps in minutes.

核心运行机制(重中之重) 用户拖动滑块、点击按钮、输入文字 →整个 Python 脚本从上到下完整重新执行一遍,页面自动刷新。 这是它最简单、同时也是最容易踩坑的底层模型。

二、优缺点

✅ 优点

  1. 极低学习门槛,API 极度简洁,会 Python 就能上手;
  2. 原生适配 Pandas、NumPy、Matplotlib、Plotly、PyTorch、LangChain;
  3. 内置大量 UI 组件:表格、图表、文件上传、聊天框、侧边栏;
  4. 开发热重载:保存代码浏览器自动刷新;
  5. 部署方案丰富:本地局域网、Streamlit Cloud 免费托管、服务器 Docker 部署;
  6. 支持多页面应用、会话状态、缓存、表单、回调函数。

❌ 局限性(适合快速原型,不适合大型生产系统)

  1. 全脚本重跑模型,不加缓存极易出现重复加载数据、重复推理;
  2. 默认单进程,不适合超高并发公网正式产品;
  3. 自定义前端样式麻烦,复杂交互(拖拽、实时协同、复杂动画)实现困难;
  4. 浏览器每个标签独立会话,会话状态不能跨标签共享;
  5. 免费云平台有访问时长、内存、休眠限制。

三、典型适用场景

✅ 适合

  • 数据探索仪表盘、可视化分析工具
  • ML / 大模型 Demo、算法效果演示
  • 内部轻量业务工具、科研交互界面
  • LangChain / Ollama 本地大模型 Web 聊天前端
  • 竞赛、项目快速演示原型

❌ 不适合

  • 面向海量用户的商用正式网站
  • 需要复杂前端交互、高并发、实时长连接系统

四、快速开始

1. 安装

pip install streamlit # 查看版本 streamlit --version # 官方示例演示 streamlit hello

2. 最小示例 app.py

import streamlit as st # 页面全局配置(必须放在脚本最顶部!) st.set_page_config(page_title="Demo", layout="wide") st.title("第一个Streamlit应用") name = st.text_input("请输入名字") num = st.slider("选择数字", min_value=0, max_value=100) 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(r"E=mc^2") # 数学公式 st.code("import streamlit as st", language="python") st.divider() # 分割线 st.write("万能输出函数,支持文本、df、图表")

2)交互输入组件(Widgets)

# 文本 text = st.text_input("单行输入") area = st.text_area("多行文本") # 数字 val = st.number_input("数字输入", min_value=0, max_value=1000) 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_click=click_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("指标", value=100, delta=5) # 空白占位(动态刷新内容) 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, delta=+33) # 内置简易图表 st.line_chart(df) st.bar_chart(df) st.area_chart(df) # 支持第三方图表 import plotly.express as px fig = px.scatter(df, x="a", y="b") 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(ttl=3600) # 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(model="qwen2.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 发给局域网内同事。

方案 2:Streamlit Community Cloud(免费首选)

条件:GitHub 账号 流程:

  1. 代码上传 GitHub 仓库;
  2. 新建requirements.txt写明所有依赖;
  3. 登录 share.streamlit.io,关联仓库一键部署;

限制:长时间无访问应用会休眠,内存有限,公开应用无法放敏感密钥。

方案 3:云服务器部署(阿里云 / 腾讯云)

常用方式:

  1. 直接后台运行 + PM2 进程守护;
  2. Docker 容器打包;
  3. 搭配 Nginx 反向代理、域名、HTTPS。

方案 4:Snowflake Streamlit(企业付费)

私有化、私有应用、数据库原生打通,适合企业场景。

八、常见踩坑清单

  1. st.set_page_config()必须脚本第一行,前面不能有任何输出;
  2. 组件 label、key 不能随意修改,否则控件状态重置;
  3. 循环内动态创建控件务必指定唯一key=
  4. 敏感 API 密钥不要硬编码代码,使用环境变量;
  5. 大文件上传上限默认较小,可修改.streamlit/config.toml调大;
  6. 不要在循环里大量使用st.empty()频繁刷新,容易卡顿;
  7. 免费云平台尽量把模型加载放入@st.cache_resource,避免每次唤醒重加载。

九、同类框架横向简单对比

表格

框架定位特点
Streamlit数据仪表盘、分析原型开发最快,脚本重跑模型,适合数据分析
GradioAI 模型演示主打机器学习推理、接口分享,适合模型快速展示
Plotly Dash企业交互式仪表板偏传统前端组件,学习曲线更高,并发优于 Streamlit
Panel灵活数据应用介于 Streamlit 与 Dash 之间,支持异步
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/25 9:46:52

Ornith-1.0开源模型:智能体编程的技术突破与实践指南

在智能体编程领域,开发者们长期面临一个核心挑战:如何让AI模型不仅能够生成代码片段,还能像真正的软件工程师一样理解复杂任务、自主规划执行步骤并持续优化解决方案。Ornith-1.0开源模型家族的发布,正是针对这一痛点的重要突破。 1. Ornith-1.0模型家族概述 1.1 什么是A…

作者头像 李华
网站建设 2026/7/25 9:46:42

免费解锁Wallpaper Engine资源宝库:RePKG终极使用指南

免费解锁Wallpaper Engine资源宝库:RePKG终极使用指南 【免费下载链接】repkg Wallpaper engine PKG extractor/TEX to image converter 项目地址: https://gitcode.com/gh_mirrors/re/repkg 你是否曾经对Wallpaper Engine中的精美壁纸资源感到好奇&#xff…

作者头像 李华
网站建设 2026/7/25 9:44:01

5分钟掌握WatermarkRemover:AI视频去水印终极指南

5分钟掌握WatermarkRemover:AI视频去水印终极指南 【免费下载链接】WatermarkRemover 批量去除视频中位置固定的水印 项目地址: https://gitcode.com/gh_mirrors/wa/WatermarkRemover 你是否曾因视频中的水印而烦恼?无论是教学视频、自媒体素材还…

作者头像 李华
网站建设 2026/7/25 9:43:58

RAG生产环境实战:从原型到落地的六大核心挑战

1. 从玩具到武器:RAG应用开发的核心认知升级第一次接触RAG(检索增强生成)技术时,我像大多数开发者一样,用几行Python脚本连接OpenAI API和FAISS向量库就兴奋不已——直到把第一个"玩具级"demo部署到生产环境…

作者头像 李华
网站建设 2026/7/25 9:40:42

【笔下生辉|03】HarmonyOS ArkTS 地区表达素材实战:复用四川、粤语、东北等分库页面结构

题库型 HarmonyOS 应用很容易在“分库页面”上失控。产品最初只有一个错别字题库时,详情页写一套 UI 没有问题;后来又加病句、标点、词语误用、网络热词、古诗纠错,每个分库都需要封面、题量、进度、章节和练习入口。如果每个页面复制一份详情…

作者头像 李华