Streamlit 是把 Python 脚本变成交互式数据 Web 应用的开源框架。开发者用 Python 声明文本、表格、图表、输入组件和聊天界面,Streamlit 负责浏览器连接、前端组件和脚本重跑。
来源:github.com/streamlit/streamlit 查看 GitHub 仓库 → 📘 使用教程 →保留教程的依据是官方在 2026-09-15 发布 1.64.0,加入原生 ECharts、异步缓存支持、输入组件新事件模式并修复多项重跑和组件问题。
来源:github.com/streamlit/streamlit/releases/tag/1.64.0用 st.* 命令声明文本、控件、数据表、图表、媒体、布局与聊天界面,不要求先写 JavaScript 前端。
来源:github.com/streamlit/streamlit/blob/develop/README.md启动本地服务器后,每个浏览器会话通过 WebSocket 连接;用户交互通常触发脚本自上而下重新执行。
来源:docs.streamlit.io/develop/concepts/architecture/architectureSession State 保存单个会话状态;st.cache_data 缓存数据结果,st.cache_resource 共享模型或连接等资源,范围和线程安全要求不同。
来源:docs.streamlit.io/develop/concepts/architecture/caching应用可自托管,也可连接 GitHub 仓库部署到免费的 Streamlit Community Cloud;云端资源和休眠规则与本地不同。
来源:docs.streamlit.io/deploy/streamlit-community-cloudstreamlit run 启动 Python 服务,浏览器通过 WebSocket 建立会话。服务器为每个活动会话运行脚本并把 Delta 消息发送到前端;组件事件返回后,框架根据事件与 fragment 范围触发重跑。Session State 跟随 WebSocket 会话,cache_data 面向可序列化结果,cache_resource 可跨会话共享资源。前端并不把任意 Python 代码搬到浏览器,数据与模型仍在服务端执行。
来源:docs.streamlit.io/develop/concepts/architecture/architecture适合数据探索、内部报表、模型演示、审批工具和聊天原型。它的脚本重跑模型便于快速开发,但复杂前端交互、长期后台任务、细粒度 API 服务和高并发产品需要额外架构。上传文件、查询参数、用户输入和自定义 HTML 都应按不可信输入处理。
来源:github.com/streamlit/streamlit/blob/develop/README.md官方最新 GitHub Release 是 1.64.0,发布于 2026-09-15,对应提交 bab1da9。该版加入 st.echarts_chart、异步感知 cache_data/cache_resource、多个控件的 on_change=ignore 或 live 参数,并修复重跑、Altair、PyDeck、下载文件名和 Custom Components v2 事件等问题。
来源:github.com/streamlit/streamlit/releases/tag/1.64.0status: official_source_checked_not_installed_or_run | checked_at: 2026-09-23 | environment: 核对官方 README、架构/运行/缓存/Community Cloud 文档、1.64.0 pyproject 与 GitHub Release;未安装包、未启动应用、未上传数据或部署云端 | limitations: 未验证本机浏览器会话、重跑、缓存一致性、上传内存、认证、性能、Community Cloud 限额或生产部署 | observed_output: 官方最新 Release 为 1.64.0,发布于 2026-09-15,对应提交 bab1da9;包要求 Python >=3.10;该版新增 st.echarts_chart 和异步感知的 cache_data/cache_resource
来源:github.com/streamlit/streamlit/releases/tag/1.64.0相比 Gradio,Streamlit 更偏完整的数据应用,提供表格、布局、导航、Session State、缓存和多页结构;Gradio 以 Python 函数或模型为中心,Interface 与 Blocks 更适合快速做输入输出演示,并可生成可调用 API。做数据仪表盘和分析工作流时先看 Streamlit;包装单个模型或函数演示时,Gradio 通常步骤更少。
来源:github.com/streamlit/streamlit (1) · github.com/gradio-app/gradio (2)Streamlit 适合用 Python 快速制作数据应用和模型原型。先锁定 1.64.0,用一个本地小应用理解重跑、状态与两类缓存,再接数据和认证;对外部署时按 Web 服务处理网络、上传、密钥与用户隔离。
来源:docs.streamlit.io/develop/concepts/architecture/run-your-app浏览器把组件事件发回服务器后,Streamlit 通常从上到下重跑脚本并重新生成页面。用 Session State 保存会话值,用 fragment 缩小重跑范围,用缓存避免重复的数据或资源初始化。
cache_data 适合查询结果和可序列化数据,会向调用方返回副本;cache_resource 适合模型、数据库连接等共享对象。共享资源必须线程安全,不能混入某个用户的私有状态。
不能。Session State 跟随当前 WebSocket 会话,刷新、重连或服务重启都可能改变生命周期。需要审计、跨设备或长期保存的数据应写入正式存储。
不要把开发命令直接当生产部署。先绑定 127.0.0.1;对外提供时增加认证、TLS、反向代理、请求和上传限制、依赖锁定、日志脱敏及进程隔离。
官方当前把 Community Cloud 描述为免费服务。它会连接 GitHub 并运行应用,资源、休眠、隐私和可用性规则与自托管不同;企业 Snowflake 路径应另行评估。