← 返回首页

第1章: Streamlit 入门与环境搭建

用最少的代码,把 Python 脚本变成可视化 Web 应用

你会在本章学到什么?

什么是 Streamlit?

Streamlit 是一个让你可以用极少的代码,把 Python 脚本快速变成 Web 应用的开源框架,特别适合数据分析、可视化展示和内部小工具。

Streamlit 的特点

Streamlit vs Flask/Django:怎么选?

💡 提示: 如果你已经会一点 Python,却不想折腾前端框架,Streamlit 是非常适合用来做「第一个数据应用」的工具。

安装前的准备:Python 与虚拟环境

建议你在一个独立的虚拟环境中安装 Streamlit,避免不同项目的依赖互相影响。

检查 Python 版本

# 查看 Python 版本 python --version # 或 python3 --version

创建虚拟环境(推荐)

# 使用 venv 创建虚拟环境 python -m venv venv # Windows 激活 venv\Scripts\activate # macOS / Linux 激活 source venv/bin/activate

安装 Streamlit

# 安装 streamlit pip install streamlit # 可选:常用数据分析库 pip install pandas numpy matplotlib plotly

验证安装

能输出版本号就说明安装成功:

python -m streamlit --version
📌 说明:
  • 如果你在 macOS 上用的是 python3,则命令也对应改为 python3 -m venv venvpython3 -m streamlit --version
  • 如果安装很慢,可以考虑配置 pip 镜像源(公司/学校网络常见)。

第一个 Streamlit 应用:Hello Streamlit

1) 新建文件:hello_streamlit.py

import streamlit as st st.title("Hello, Streamlit!") st.write("欢迎使用 Streamlit 构建你的第一个数据应用!") name = st.text_input("请输入你的名字:", "同学") if st.button("打招呼"): st.success(f"你好,{name},祝你学习顺利!")

2) 运行应用

streamlit run hello_streamlit.py
📌 你会看到什么:
  • 终端会输出本地访问地址(通常是 http://localhost:8501)。
  • 你修改代码并保存后,浏览器页面会提示是否重新运行。
  • Streamlit 会在每次交互时“重新从上到下执行脚本”(后面章节会深入讲)。

理解 Streamlit 的运行模型(很关键)

Streamlit 与传统 Web 框架最大的不同之一是:它不是“请求 -> 路由 -> 渲染模板”,而更像是“写脚本 -> 运行 -> 根据组件状态重新执行”。

核心规律

⚠️ 常见坑: 你会发现按钮一点击就“没了”,或者某些变量每次交互都重新初始化。这不是 bug,是 Streamlit 的设计。掌握 session_state 后就能优雅解决。

常见输出与交互组件速览

下面这段代码基本涵盖了你做小工具最常用的一批组件。建议你复制到本地运行并逐行删改体验:

import streamlit as st import pandas as pd st.title("组件速览") st.caption("把这段代码保存为 widgets_demo.py 然后运行:streamlit run widgets_demo.py") st.header("文本输出") st.write("st.write 可以输出字符串、数字、字典、表格等") st.markdown("**Markdown** 也支持,比如:`code`、列表、链接") st.header("输入组件") name = st.text_input("姓名", "同学") age = st.slider("年龄", 0, 100, 18) level = st.selectbox("熟练度", ["入门", "进阶", "熟练"]) st.header("按钮与提示") if st.button("生成个人卡片"): st.success(f"你好 {name},年龄 {age},当前水平:{level}") st.header("表格") df = pd.DataFrame({"字段": ["name", "age", "level"], "值": [name, age, level]}) st.dataframe(df)

📝 章节练习

练习 1:把 Hello 应用升级成“自我介绍卡”

要求:

  • 新增输入:年龄(说一个合理范围)、城市(下拉框)
  • 点击按钮后再显示结果(不要一输入就显示)
  • st.successst.info 美化输出

练习 2:排错训练(故意制造问题)

要求:

  • 把应用端口改成 8501 以外的端口运行(例如 8502),观察访问地址变化。
  • 尝试同时开两个 Streamlit 应用,看看端口冲突时会发生什么。
  • 记录你遇到的报错信息,并在下一节课中对照“常见坑排查”逐个解决。

常见问题与排查

1) 运行后浏览器打不开?

2) 修改代码没生效?

3) 每次交互都重新执行太慢?

本章小结

← 返回首页 下一章:常见组件与布局 →