Streamlit 官方文档

1 基本介绍

Streamlit 是一个 Python 库,能够用于使用 Python 创建可交互的、数据驱动的网页应用

pip install streamlit # 安装
streamlit hello # 测试安装是否成功

启动命令:streamlit run your_script.py [-- script args]

快速上手:Streamlit 快速上手

官方文档 - 完整API参考 官方文档 - 常见故障排查

常用技巧:

  • 点击页面右上角配置”始终重新运行“,这样代码修改后页面会自动更新
  • 针对计算量大的函数可添加@st.cache 装饰器实现结果缓存
  • 通过在pages目录中添加.py文件来实现页面的添加和多页面的管理
  • 文件的名称会自动成为对应页面的label(可用于页面间跳转)
  • 不同页面之间的Python模块是全局共享的(包含已设定的变量)
  • 使用components.html()components.iframe()显示HTML或Python图表

2 高级功能

  1. 功能菜单(页面右上角):重启、主题、打印、录频、清除缓存、部署应用
  2. 按钮行为和示例
    • 按钮适合瞬态信息与单击的进程,不适合嵌套等场景
    • 按钮的状态值保存——需要借助st.session_state来存储相关信息
    • 多个按钮之间存在依赖关系时,也需要借助st.session_state来管理每个步骤
    • 联动(比如动态添加)其他小组件时,请确保使用索引来保持键的唯一性
    • st.session_state的存储信息会提供给当前会话的用户; st.cache_data的存储信息会提供给所有会话的用户;存储的信息需要先清除才能实现更新
  3. 缓存 Caching
    • st.cache_data适合缓存数据或大部分Python对象(常用,在不同会话间不共享)
    • st.cache_resource适合缓存全局资源(比如模型或数据库连接,在不同会话间共享)
    • 建议在应用中缓存所有的SQL查询或API结果;不同数据源的连接方法:示例
    • st.cache_data(ttl=3600, max_entries=1000) ,缓存时效为3600 秒,最大缓存条数为1000
    • 参数show_spinner可以用于设定缓存函数激活时的页面显示文本:“正在获取数据...”
    • 在参数名称前面加上下划线(例如, _param1 ),它就不会用于(也不会影响)缓存
    • 缓存机制要求参数满足哈希性,对于个别情况需要使用hash_funcs参数单独进行哈希化
    • 在处理非常大(亿级)的数据,建议使用 st.cache_resource(无序列化和反序列化操作)
      除此之外,缓存机制还可能存在复制、并发、迁移等场景下的注意事项
  4. 命令行界面:使用streamlit --help查看常见命令
  5. 配置
    • .streamlit/config.toml是全局配置文件(优先级低)
    • 也可以通过 STREAMLIT_* 环境变量来实现配置(优先级中)
    • 还可以在streamlit run时添加相关配置(优先级高)
  6. 主题:默认 Streamlit Light 主题
  7. 数据连接:支持常见SDK,简单易用,具备私密安全性
  8. 数据框 Dataframe
    • 基本显示功能:排序、调整大小、全屏、搜索、下载、复制
    • 支持数据编辑:添加/删除、复制粘贴、批量编辑、输入验证
    • 列的特殊配置:支持选择框、日期、链接、图像、基础图表等类型
    • 其他:可处理大型数据集(百万级)、传输限制、服务器/浏览器内存限制
    • 局限性:数据编辑仅支持部分类型;数据量大于15w时停用排序功能
  9. 表单 Forms:必须包含提交按钮;不支持表单的嵌套
  10. 会话状态:用于不同用户会话之间的变量共享
  11. 小组件行为:将用户的信息传递到 Python 代码中
  12. 预发布功能:以experimental_ 为前缀的功能(可能随时更改或删除)
  13. 使用时区:使得日期或时间信息根据用户的时区调整
  14. 静态文件服务:存储在./static/文件夹,可托管和提供小型静态媒体文件
  15. HTTPs支持:建议使用反向代理或负载平衡来支持自托管和生产用例
  16. 加密管理:使用 TOML 格式在本地存储密钥(或者存储在外部)

3 第三方组件

  1. Pygwalker(7K ⭐):类似于Tableau的交互式BI工具
  2. HiPlot(2K ⭐):轻量级的交互式可视化工具(同上)
  3. WebRTC (937⭐):目标检测相关的模型演示
  4. Authenticator(782⭐):身份验证器,添加账号登录功能
  5. NLU (727⭐):集成很多NLU项目的文本挖掘功能
  6. streamlit-pandas-profiling(256⭐):表格数据自动化探索
  7. Stqdm(171⭐):在Steamlit中实现类似tqdm的进度条功能
  8. streamlit-shap(56⭐):实现针对模型的SHAP分析

其他进阶资源

Cheat Sheet APP Gallery

往年同期文章