自学内容网 自学内容网

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,开启您的数据应用开发之旅!


原文地址:https://blog.csdn.net/SWZ156/article/details/143518162

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!