当前位置: 首页 > article >正文

Streamlit 入门使用指南及与 FastAPI 的配合使用

Streamlit 入门使用指南及与 FastAPI 的配合使用

Streamlit 是一个用于构建数据应用的快速 Web 应用框架,它特别适合数据科学家和机器学习工程师,无需复杂的前端开发知识即可创建交互式应用。结合 FastAPI,可以轻松构建后端服务并将其与 Streamlit 前端进行配合使用,创建强大的数据应用。

1. 安装 Streamlit 和 FastAPI

首先,您需要安装 Streamlit 和 FastAPI。可以使用以下命令通过 pip 安装它们:

pip install streamlit fastapi uvicorn
2. 创建简单的 Streamlit 应用

以下是一个简单的 Streamlit 应用示例,展示了如何构建用户界面并处理用户输入。

# app.py
import streamlit as st
import requests

# 设置页面标题
st.title("简单的 Streamlit 应用")

# 创建文件上传控件
uploaded_file = st.file_uploader("上传文件", type=["csv", "txt"])

if uploaded_file is not None:
    # 读取文件内容
    data = uploaded_file.getvalue().decode("utf-8")
    st.write("文件内容:")
    st.text(data)

# 创建文本输入控件
user_input = st.text_input("输入一些文本")

if st.button("提交"):
    # 将用户输入发送到 FastAPI 后端
    response = requests.post("http://127.0.0.1:8000/submit/", json={"input_text": user_input})
    if response.status_code == 200:
        st.write("后端响应:", response.json())
    else:
        st.error("请求失败!")
3. 创建 FastAPI 后端

接下来,创建一个简单的 FastAPI 后端来处理来自 Streamlit 的请求。

# main.py
from fastapi import FastAPI
from pydantic import BaseModel

app = FastAPI()

class InputData(BaseModel):
    input_text: str

@app.post("/submit/")
async def submit_data(data: InputData):
    return {"message": f"您提交的文本是:{data.input_text}"}

# 运行应用
# 在命令行中执行 uvicorn main:app --reload
4. 运行应用

运行 FastAPI 后端

在命令行中导航到 FastAPI 文件所在目录,然后运行以下命令:

uvicorn main:app --reload

运行 Streamlit 应用

在另一个命令行窗口中导航到 Streamlit 文件所在目录,然后运行以下命令:

streamlit run app.py
5. 访问应用
  • 访问 FastAPI 文档:http://127.0.0.1:8000/docs
  • 访问 Streamlit 应用:默认在 http://localhost:8501
6. 示例功能
  • 文件上传:用户可以上传文件,应用会读取并显示文件内容。
  • 文本输入:用户可以输入文本,点击提交后将数据发送到 FastAPI 后端,后端会返回处理结果。
7. 总结

Streamlit 和 FastAPI 的结合使得构建数据驱动的 Web 应用变得轻松而高效。Streamlit 负责提供用户友好的界面,FastAPI 则处理后端逻辑和数据请求。通过这种组合,您可以快速构建出强大且功能丰富的应用,无论是用于数据可视化、机器学习模型的展示,还是其他需要快速开发的应用场景。

希望这篇入门指南能帮助您快速上手 Streamlit 和 FastAPI,开启您的数据应用开发之旅!


http://www.kler.cn/a/385353.html

相关文章:

  • Docker如何以配置文件方式安装nginx
  • CentOS 7 更换软件仓库
  • C++总结
  • 状态模式(State Pattern)详解
  • 线性表之链表详解
  • 【C/C++】strncpy函数的模拟实现
  • 如何缩小PPT演示文稿的大小?
  • Spring Boot框架在信息学科平台建设中的实战技巧
  • Linux上的各种查询
  • 关于使用python pptx生成或“复制”PPT页面的问题
  • 鸿蒙进阶篇-属性动画
  • 什么是 OpenTelemetry?
  • 苹果发布iOS 18.2首个公测版:Siri接入ChatGPT、iPhone 16拍照按钮有用了
  • 回调数据丢了?
  • 从0开始学习机器学习--Day19--学习曲线
  • 让Apache正确处理不同编码的文件避免中文乱码
  • Redis 热key总结
  • 各种数据库介绍
  • LeetCode 热题100 之 栈
  • C# 编程语言:跨时代的革命
  • 显存占用 显存测试
  • 《现代网络技术》读书笔记:SDN数据平面和OpenFlow
  • O-RAN 前传传输同步配置
  • kafka版本
  • java中图片加载
  • While 循环与 break 语句