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

Streamlit 官翻 5 - 部署、社区云 Deploy

文章目录

  • 部署
  • 部署核心概念
  • 部署应用时的依赖管理
  • 安装 Python 及其他软件
    • 安装 Python 包
      • `pip` 与 `requirements.txt`
  • 部署应用时的密钥管理
  • 在 Snowflake 中部署 Streamlit 应用
        • Snowflake 中的 Streamlit 快速入门
        • 示例
        • 开始使用 Snowflake
        • 注意:
  • 部署教程
  • 使用 Docker 部署 Streamlit
    • 简介
    • 前提条件
      • 安装 Docker Engine
      • 检查网络端口可访问性
    • 创建 Dockerfile
      • Dockerfile 详解
        • 重要提示
    • 构建 Docker 镜像
    • 运行 Docker 容器
        • 注意:
  • 使用 Kubernetes 部署 Streamlit
    • 简介
    • 前提条件
      • 安装 Docker 引擎
      • 安装 gcloud CLI
    • 创建 Docker 容器
      • 创建入口脚本
      • 创建 Dockerfile
        • 重要提示
      • 构建 Docker 镜像
        • 重要提示
      • 将Docker镜像上传至容器仓库
    • 创建 Kubernetes 部署
      • 安装并运行 Kubernetes
      • 配置 Google OAuth 客户端和 oauth2-proxy
      • 创建 Kubernetes 配置文件
        • 重要提示
      • 配置 TLS 支持
      • 验证部署
  • 欢迎使用 Streamlit 社区云
  • 开始使用 Streamlit Community Cloud
        • 快速入门
        • 信任与安全
  • 快速入门
    • 前提条件
    • 注册 Streamlit Community Cloud
    • 为你的公共仓库添加访问权限
    • 可选:添加对私有仓库的访问权限
    • 从模板创建新应用
    • 在 GitHub Codespaces 中编辑你的应用
    • 发布您的更改
    • 停止或删除你的代码空间
  • 创建您的账户
    • 注册
        • 重要提示
      • 选项1:使用邮件验证码登录
      • 选项2:使用Google登录
      • 选项3:通过GitHub登录
    • 完成注册
  • 连接你的 GitHub 账户
        • 重要提示
    • 前提条件
    • 添加对公共仓库的访问权限
    • 可选:添加对私有仓库的访问权限
    • 组织访问权限
      • 您拥有的组织
      • 他人拥有的组织
      • 先前或待处理的授权
        • 已授权访问
        • 待处理访问权限
        • 访问被拒
    • 下一步
  • 探索您的工作区
    • 工作区
      • 切换工作区
      • 邀请其他开发者加入您的工作区
        • 注意:
    • 我的应用
      • 部署应用
    • 我的个人资料
    • 探索
  • 从模板部署应用
    • 访问模板选择器
    • 选择模板
        • 重要提示
    • 查看您的应用
        • 重要提示
  • 分叉并编辑公共应用
  • Streamlit 信任与安全
    • 产品安全
      • 身份验证
      • 权限说明
    • 网络与应用安全
      • 数据托管
      • 数据删除
      • 虚拟私有云
      • 加密
      • 权限与认证
      • 事件响应
      • 渗透测试
      • 漏洞管理
  • 在社区云上准备并部署您的应用
    • 概述
    • 准备就绪,开始吧!
  • 社区云应用的文件组织方式
    • 基础示例
    • 在子目录中使用入口文件
    • 单仓库中的多应用管理
  • 为你的社区云应用配置依赖项
        • 注意:
    • 添加 Python 依赖项
        • 重要提示
      • 其他 Python 包管理工具
        • 警告
    • apt-get 依赖项
  • 为你的社区云应用管理密钥
    • 简介
    • 如何使用密钥管理
      • 前提条件
      • 高级设置
      • 编辑应用的密钥
  • 在社区云上部署您的应用
    • 选择您的代码库和入口文件
    • 可选:配置密钥和Python版本
    • 查看应用启动过程
    • 查看您的应用
      • 唯一子域名
      • 自定义子域名
  • 管理你的应用
    • 从工作区管理您的应用
      • 应用排序
      • 应用溢出菜单
    • 直接从应用管理你的应用
      • 云端日志
      • 应用框架
    • 在GitHub中管理你的应用
      • 更新你的应用
      • 添加或移除依赖项
    • 应用资源与限制
      • 资源限制
      • 造福世界
      • 优化你的应用
        • 开发者视图
      • 应用休眠机制
  • 应用分析
    • 访问应用分析数据
      • 从工作区访问应用分析
      • 从云端日志访问应用分析数据
    • 应用查看者
        • 重要提示
  • 应用设置
    • 访问应用设置
      • 从工作区访问应用设置
      • 从云端日志访问应用设置
    • 更改应用设置
      • 查看或修改应用URL
      • 更新应用的分享设置
      • 查看或更新密钥
  • 删除您的应用
      • 从工作区删除应用
      • 从云端日志中删除你的应用
  • 编辑你的应用
    • 使用 GitHub Codespaces 编辑你的应用
      • 为已部署应用创建代码空间
      • 可选操作:发布你的更改
      • 停止或删除你的代码空间
  • 收藏你的应用
        • 注意:
    • 收藏与取消收藏你的应用
      • 在工作区收藏你的应用
      • 从应用工具栏收藏你的应用
  • 重启你的应用
      • 从工作区重启应用
      • 从云端日志重启你的应用
  • 重命名或更改应用的 GitHub 坐标
    • 删除、重命名与重新部署
    • 当您已更改应用的GitHub坐标时重新获取访问权限
  • 在Community Cloud上升级应用的Python版本
  • 在 Streamlit Community Cloud 上升级应用的 Streamlit 版本
    • 无依赖文件
    • 使用依赖文件
  • 分享你的应用
    • 设置应用为公开或私有
      • 从应用设置中配置隐私权限
      • 通过分享按钮设置隐私权限
    • 分享你的公开应用
      • 在社交媒体上分享你的应用
      • 通过邮件邀请查看者
      • 复制你的应用 URL
      • 为你的 GitHub 仓库添加徽章
        • 注意:
    • 分享你的私有应用
        • 重要提示
      • 通过分享按钮邀请查看者
      • 从应用设置邀请查看者
  • 嵌入你的应用
    • 通过 iframe 嵌入应用
        • 重要提示
    • 通过 oEmbed 实现嵌入
      • 示例
      • oEmbed 支持的关键站点
      • iframe 与 oEmbed 对比
    • 嵌入选项
      • 构建嵌入链接
  • SEO 与搜索索引优化
    • 最大化应用可索引性
      • 确保你的应用是公开的
      • 尽早选择自定义子域名
      • 选择描述性应用标题
      • 自定义应用的元描述
    • 我的应用在索引中是什么样子?
    • 如果我不想让我的应用被索引怎么办?
  • 分享预览功能
        • 注意:
    • 标题
    • 描述信息
    • 预览图片
      • 将应用从公开切换为私有
  • 管理您的账户
    • 访问您的工作区设置
  • 登录与登出
    • 使用 Google 登录
    • 通过 GitHub 登录
        • 重要提示
    • 通过邮箱登录
    • 退出您的账户
  • 工作区设置
    • 访问您的工作区设置
    • 关联账户
    • 限制
    • 支持
  • 管理你的 GitHub 连接
    • 为组织添加访问权限
      • 撤销并重新授权
      • 授予先前被拒绝的访问权限
    • 重命名您的 GitHub 账户或代码库
  • 更新您的邮箱
    • 选项一:创建新账号并合并
    • 选项二:使用您的GitHub账户
        • 重要提示
  • 删除您的账户
        • 警告
    • 如何删除您的账户
  • 社区云的状态与限制
    • 社区云状态
    • GitHub OAuth 授权范围
      • 开发者权限
    • 仓库文件结构
    • Linux 环境
    • Python 环境
    • 配置
    • IP 地址
        • 警告
    • 其他限制


部署

https://docs.streamlit.io/deploy

获取部署应用并与用户共享所需的所有信息。


概念。了解应用部署的基础知识。


Streamlit 社区云。在我们的免费平台上部署应用,加入全球开发者共享应用的社区。这是非商业、个人和教育类应用的理想选择。


Snowflake。在Snowflake中部署应用,获得安全的企业级环境。这是商业应用的绝佳平台。


其他平台。通过我们便捷的教程合集,学习如何在多种平台上部署应用。


上一页:开发
下一页:概念
我们的论坛充满有用信息和Streamlit专家。


部署核心概念

https://docs.streamlit.io/deploy/concepts

了解应用部署的基础概念。部署应用主要涉及三个关键流程:

  • 在部署环境中安装 Python、Streamlit 及其他依赖项
  • 安全处理密钥和敏感信息
  • 远程启动应用(streamlit run

若使用 Streamlit Community Cloud,我们将为您完成大部分工作!

  • 依赖项配置
    掌握部署环境配置的基础知识
  • 密钥管理
    了解密钥管理的基本原理

上一页:部署
下一页:依赖项


部署应用时的依赖管理

https://docs.streamlit.io/deploy/concepts/dependencies

在开始开发应用之前,您需要安装Python和Streamlit来设置并配置开发环境。部署应用时,您同样需要以相同方式设置和配置部署环境。当将应用部署到云服务时,应用的Python服务器会在远程机器上运行。这台远程机器无法访问您个人电脑上的所有文件和程序。

所有Streamlit应用至少有两个依赖项:Python和Streamlit。您的应用可能还有额外的依赖项,包括需要安装才能正确执行脚本的Python包或其他软件。如果您使用专为Streamlit应用设计的服务(如Streamlit Community Cloud),我们将为您处理Python和Streamlit的安装!


安装 Python 及其他软件

如果您使用 Streamlit Community Cloud,Python 已经预装完成。您只需在部署对话框中选择版本即可。如需自行安装 Python 或其他非 Python 软件,请根据平台指引安装额外软件。通常您会使用包管理工具来完成此操作。

例如,Streamlit Community Cloud 在基于 Debian 的 Linux 系统中使用 Advanced Package Tool (apt)。有关在 Streamlit Community Cloud 上安装非 Python 依赖项的更多信息,请参阅 apt-get 依赖项。


安装 Python 包

在部署环境中安装好 Python 后,您需要安装所有必要的 Python 包,包括 Streamlit!每次通过 import 导入已安装的包时,您就为脚本添加了一个 Python 依赖项。您需要通过 Python 包管理器在部署环境中安装这些依赖项。

如果您使用 Streamlit Community Cloud,默认会安装最新版本的 Streamlit 及其所有依赖项。因此,如果您开发的是简单应用且不需要额外依赖项,就完全无需进行任何操作!


piprequirements.txt

由于 pip 默认随 Python 安装,配置 Python 环境最常见的方式就是使用 requirements.txt 文件。该文件的每一行代表一个需要通过 pip install 安装的包。注意:不要requirements.txt 中包含 Python 内置库(如 mathrandomdistutils),这些库属于 Python 的一部分,无需单独安装。


提示:由于依赖项可能对特定 Python 版本有要求,请始终明确开发环境使用的 Python 版本,并在部署环境中选择相同版本。

例如,若你的脚本如下所示,只需安装 Streamlit 即可。由于 pandasnumpy 会作为 streamlit 的直接依赖被自动安装,无需额外声明。同理,mathrandom 属于 Python 内置模块。

import streamlit as st
import pandas as pd
import numpy as np
import math
import randomst.write('Hi!')

然而,准确记录所使用的包是最佳实践,因此推荐的 requirements.txt 文件应为:

streamlit
pandas
numpy

如果需要指定特定版本,另一个有效示例如下:

streamlit==1.24.1
pandas>2.0
numpy<=1.25.1

requirements.txt 文件通常保存在代码仓库或文件目录的根路径下。如果您使用的是 Streamlit Community Cloud,请参阅添加 Python 依赖项获取更多信息。否则,请查阅您所用平台的文档。


上一页:核心概念

下一页:密钥管理


部署应用时的密钥管理

https://docs.streamlit.io/deploy/concepts/secrets

当连接数据源或外部服务时,您可能需要处理凭证或密钥等敏感信息。这些机密信息应当以安全的方式进行存储和传输。部署应用时,请确保了解所用平台的密钥管理功能和机制,以便遵循最佳实践。

避免直接在代码中保存密钥,并保持.gitignore文件更新,防止意外将本地密钥提交至代码仓库。如需相关安全提示,请参阅安全提醒。

若使用Streamlit Community Cloud,可通过密钥管理功能将环境变量和密钥存储在代码之外。若使用其他专为Streamlit设计的平台,请检查是否内置密钥处理机制——某些平台可能支持st.secrets或安全上传secrets.toml文件。

关于结合环境变量使用st.connection的详细信息,请参见全局密钥、多应用及多数据存储管理。


上一页:依赖项
下一页:Streamlit Community Cloud


在 Snowflake 中部署 Streamlit 应用

https://docs.streamlit.io/deploy/snowflake

将您的应用与数据托管在统一的全球化平台上。Snowflake 提供行业领先的功能,为您的账户、用户、数据和应用提供最高级别的安全保障。如果您正在寻找企业级托管解决方案,Snowflake 是理想之选!


Snowflake 中的 Streamlit 快速入门

创建一个免费试用账户,并在 Snowflake 中使用 Streamlit 部署一个应用。

https://docs.streamlit.io/get-started/installation/streamlit-in-snowflake?slug=deploy&slug=snowflake


示例

在 Snowflake Labs 的 snowflake-demo-streamlit 仓库中探索各种示例应用。

https://github.com/Snowflake-Labs/snowflake-demo-streamlit?slug=deploy&slug=snowflake


开始使用 Snowflake

了解更多信息,请参阅 Snowflake 的文档。

https://docs.snowflake.com/user-guide-getting-started?slug=deploy&slug=snowflake


在 Snowflake 中托管 Streamlit 应用有三种方式:

Streamlit in Snowflake。将您的 Streamlit 应用作为原生对象在 Snowflake 中运行。享受浏览器内编辑器和极简的环境配置工作。通过基于角色的访问控制(RBAC)与您 Snowflake 账户中的其他用户共享应用。这是为企业内部部署应用的理想方式。查看 Snowflake 文档!


Snowflake Native Apps。将您的应用与数据打包,并与其他 Snowflake 账户共享。这是与其他使用 Snowflake 的组织共享应用及其底层数据的绝佳方式。查看 Snowflake 文档!


Snowpark Container Services。将您的应用部署在专为 Snowflake 优化的容器中运行。这是最灵活的选项,您可以使用任何库并为应用分配公共 URL。通过您的 Snowflake 账户管理允许的访问者。查看 Snowflake 文档!


注意:

使用 Snowpark Container Services 部署 Streamlit 应用需要计算池,但目前试用账户暂不支持此功能。


上一页:Streamlit Community Cloud
下一页:其他平台


部署教程

https://docs.streamlit.io/deploy/tutorials

本节包含将Streamlit应用部署到各种云平台和服务的分步指南。我们提供以下部署指南:


  • Streamlit社区云
    https://docs.streamlit.io/deploy/streamlit-community-cloud/get-started
  • Docker
    https://docs.streamlit.io/deploy/tutorials/docker
  • Kubernetes
    https://docs.streamlit.io/deploy/tutorials/kubernetes

在我们为其他托管服务提供商编写官方Streamlit部署指南的同时,这里有一些用户提交的不同云服务教程:

  • 如何将Streamlit应用部署到Google App Engine,作者Yuichiro Tachibana (Tsuchiya)
  • Heroku上托管Streamlit,作者Maarten Grootendorst
  • Ploomber Cloud上部署Streamlit,作者Ido Michael
  • 21YunBox上托管Streamlit,作者Toby Lei
  • Koyeb上部署Streamlit应用,作者Justin Ellingwood
  • 社区支持的部署维基

上一页:Snowflake
下一页:Docker


使用 Docker 部署 Streamlit

https://docs.streamlit.io/deploy/tutorials/docker


简介

你已经开发了一款出色的应用,现在想要与他人分享,该怎么办呢?你有几个选择。首先,你需要考虑在哪里运行你的 Streamlit 应用,以及如何访问它?

  • 企业内部网络 - 大多数企业网络对外部是封闭的。通常你会通过 VPN 登录企业网络并访问其中的资源。出于安全考虑,你可以在企业网络的服务器上运行 Streamlit 应用,确保只有公司内部人员才能访问。
  • 云端部署 - 如果你希望从企业网络外部访问 Streamlit 应用,或者与家庭网络或笔记本电脑之外的人分享应用,这个选项可能更适合你。这种情况下,具体操作取决于你的托管服务提供商。我们提供了来自 Heroku、AWS 等提供商的社区提交的部署指南。

无论你选择在哪里部署应用,首先需要将其容器化。本指南将带你使用 Docker 部署应用。如果你更倾向于使用 Kubernetes,请参阅使用 Kubernetes 部署 Streamlit。


前提条件

1、安装 Docker Engine

2、检查网络端口可访问性


安装 Docker Engine

如果尚未安装,请在您的服务器上安装 Docker。Docker 为许多 Linux 发行版提供了 .deb.rpm 安装包,包括:

  • Debian
  • Ubuntu

通过运行 hello-world Docker 镜像来验证 Docker Engine 是否安装正确:

sudo docker run hello-world

提示:按照 Docker 官方的 Linux 安装后步骤 将 Docker 配置为非 root 用户运行,这样就不需要在 docker 命令前加 sudo 了。


检查网络端口可访问性

由于您和您的用户都处于企业VPN之后,需要确保所有人都能访问特定网络端口。以端口8501为例,这是Streamlit默认使用的端口。请联系您的IT团队,为您和您的用户申请开通对端口8501的访问权限。


创建 Dockerfile

Docker 通过读取 Dockerfile 中的指令来构建镜像。Dockerfile 是一个文本文件,其中包含用户可以在命令行上调用的所有命令,用于组装镜像。更多信息请参阅 Dockerfile 参考文档。docker build 命令会根据 Dockerfile 构建镜像。docker run 命令会先在指定镜像上创建容器,然后使用指定命令启动它。

以下是一个示例 Dockerfile,你可以将其添加到项目根目录中,例如 /app/ 目录下。

# app/DockerfileFROM python:3.9-slimWORKDIR /appRUN apt-get update && apt-get install -y \build-essential \curl \software-properties-common \git \&& rm -rf /var/lib/apt/lists/*RUN git clone https://github.com/streamlit/streamlit-example.git .RUN pip3 install -r requirements.txtEXPOSE 8501HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/healthENTRYPOINT ["streamlit", "run", "streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0"]

Dockerfile 详解

让我们逐行解析这个 Dockerfile:

1、每个 Dockerfile 都必须以 FROM 指令开头。该指令用于设置容器的基础镜像(可以理解为操作系统):

from python:3.9-slim

Docker 提供了多种基于不同 Linux 发行版的官方基础镜像。此外,还包含预装特定语言模块的基础镜像,例如 Python。python 镜像提供多种变体,每个都针对特定场景设计。这里我们使用 python:3.9-slim 镜像,这是一个预装 Python 3.9 最新版本的轻量级镜像。


提示:只要你的自定义基础镜像包含 Streamlit 支持的 Python 版本,也可以使用。选择基础镜像没有放之四海皆准的方案,Streamlit 也没有官方指定的专用基础镜像。


2、WORKDIR 指令为后续的 RUNCMDENTRYPOINTCOPYADD 指令设置工作目录。我们将其设为 app/WORKDIR /app


重要提示

如开发流程中所述,对于 Streamlit 1.10.0 及更高版本,无法从 Linux 发行版的根目录运行 Streamlit 应用。您的主脚本应存放在非根目录的其他目录中。若尝试从根目录运行 Streamlit 应用,Streamlit 将抛出 FileNotFoundError: [Errno 2] No such file or directory 错误。更多详情,请参阅 GitHub 议题 #5239。

如果您使用的是 Streamlit 1.10.0 或更高版本,必须将 WORKDIR 设置为非根目录的其他目录。例如,可以按照上方示例 Dockerfile 所示,将 WORKDIR 设为 /app

  1. 安装 git,以便从远程仓库克隆应用代码:
RUN apt-get update && apt-get install -y \build-essential \curl \software-properties-common \git \&& rm -rf /var/lib/apt/lists/*

4、将远程仓库中的代码克隆到 WORKDIR 目录:

a. 如果代码位于公共仓库:

RUN git clone https://github.com/streamlit/streamlit-example.git .`

克隆完成后,WORKDIR目录结构如下所示:

app/
- requirements.txt
- streamlit_app.py

其中 requirements.txt 文件包含所有 Python 依赖项。例如

altair
pandas
streamlit

streamlit_app.py 是你的主脚本。例如:

from collections import namedtuple
import altair as alt
import math
import pandas as pd
import streamlit as st"""
# Welcome to Streamlit!Edit `/streamlit_app.py` to customize this app to your heart's desire :heart:If you have any questions, checkout our [documentation](https://docs.streamlit.io) and [community forums](https://discuss.streamlit.io).In the meantime, below is an example of what you can do with just a few lines of code: """
with st.echo(code_location='below'):total_points = st.slider("Number of points in spiral", 1, 5000, 2000)num_turns = st.slider("Number of turns in spiral", 1, 100, 9)Point = namedtuple('Point', 'x y')data = []points_per_turn = total_points / num_turnsfor curr_point_num in range(total_points):curr_turn, i = divmod(curr_point_num, points_per_turn)angle = (curr_turn + 1) * 2 * math.pi * i / points_per_turnradius = curr_point_num / total_pointsx = radius * math.cos(angle)y = radius * math.sin(angle)data.append(Point(x, y))st.altair_chart(alt.Chart(pd.DataFrame(data), height=500, width=500).mark_circle(color='#0068c9', opacity=0.5).encode(x='x:Q', y='y:Q'))

b. 如果您的代码存放在私有仓库中,请参阅使用SSH访问构建中的私有数据,并相应修改Dockerfile——安装SSH客户端、下载github.com的公钥,然后克隆您的私有仓库。如果使用其他版本控制系统如GitLab或Bitbucket,请查阅该系统的文档了解如何将代码复制到Dockerfile的WORKDIR目录。

c. 如果代码与Dockerfile位于同一目录,请通过替换git clone命令为以下内容,将所有应用文件(包括streamlit_app.pyrequirements.txt等)从服务器复制到容器中:

COPY . .

更通俗地说,这个思路是将应用代码从服务器上的任意位置复制到容器中。如果代码不在 Dockerfile 同一目录下,请修改上述命令以包含代码路径。

5、在容器中通过克隆的 requirements.txt 安装应用的 Python 依赖项:

RUN pip3 install -r requirements.txt

6、EXPOSE 指令告知 Docker 容器在运行时监听指定的网络端口。您的容器需要监听 Streamlit 的(默认)端口 8501:

EXPOSE 8501

7、HEALTHCHECK 指令告诉 Docker 如何测试容器以检查其是否仍在正常运行。您的容器需要监听 Streamlit 的(默认)端口 8501:

HEALTHCHECK CMD curl --fail http://localhost:8501/_stcore/health  

8、ENTRYPOINT 允许您配置一个将作为可执行文件运行的容器。此处它还包含了您应用的完整 streamlit run 命令,因此您无需从命令行调用它:

ENTRYPOINT ["streamlit", "run", "streamlit_app.py", "--server.port=8501", "--server.address=0.0.0.0"]

构建 Docker 镜像

docker build 命令会根据 Dockerfile 构建镜像。在服务器的 app/ 目录下运行以下命令来构建镜像:

docker build -t streamlit .

-t 标志用于给镜像打标签。在这里,我们将镜像标记为 streamlit。如果运行:

docker images

你会在 REPOSITORY 列下看到一个 streamlit 镜像。例如:

REPOSITORY TAG IMAGE ID CREATED SIZE
streamlit latest 70b0759a094d About a minute ago 1.02GB

运行 Docker 容器

现在您已经构建了镜像,可以通过执行以下命令来运行容器:

docker run -p 8501:8501 streamlit

-p 标志将容器的 8501 端口发布到服务器的 8501 端口。

如果一切顺利,您应该会看到类似以下的输出:

docker run -p 8501:8501 streamlitYou can now view your Streamlit app in your browser.URL: http://0.0.0.0:8501

用户可以通过访问 http://0.0.0.0:8501http://localhost:8501 来查看你的应用


注意:

根据您服务器的网络配置,可以将端口映射到80/443,这样用户就能通过服务器IP或主机名访问您的应用。例如:http://your-server-ip:80http://your-hostname:443


上一页:其他平台
下一页:Kubernetes


使用 Kubernetes 部署 Streamlit

https://docs.streamlit.io/deploy/tutorials/kubernetes


简介

你已经开发了一个出色的应用,现在想与他人分享,该如何操作?这里有几个选择。首先,你需要确定在哪里运行你的 Streamlit 应用,以及如何访问它?

  • 在企业内网中运行 - 大多数企业网络对外部是封闭的。通常你会通过 VPN 登录企业内网来访问内部资源。出于安全考虑,你可以在企业内网的服务器上运行 Streamlit 应用,确保只有公司内部人员能够访问。
  • 在云端运行 - 如果你希望从企业网络外部访问 Streamlit 应用,或者想与家庭网络或笔记本电脑之外的人分享应用,可以选择这个方案。具体实现取决于你的托管服务提供商。我们提供了由社区贡献的 部署指南,涵盖 Heroku、AWS 等平台。

无论你选择在哪里部署应用,首先需要将其容器化。本指南将详细介绍如何使用 Kubernetes 部署应用。如果你更倾向于使用 Docker,请参考 使用 Docker 部署 Streamlit。


前提条件

1、安装 Docker Engine

2、安装 gcloud CLI


安装 Docker 引擎

如果尚未安装,请在您的服务器上安装 Docker。Docker 为多种 Linux 发行版提供 .deb.rpm 安装包,包括:

  • Debian
  • Ubuntu

通过运行 hello-world Docker 镜像验证 Docker 引擎是否安装正确:

sudo docker run hello-world


提示:遵循 Docker 官方的 Linux 安装后步骤,以非 root 用户身份运行 Docker,这样就不必在 docker 命令前加上 sudo


安装 gcloud CLI

本指南将介绍如何使用 Kubernetes 编排 Docker 容器,并将 Docker 镜像托管在 Google Container Registry (GCR) 上。由于 GCR 是 Google 官方支持的 Docker 仓库,我们需要将 gcloud 注册为 Docker 凭证助手。

请按照官方文档 安装 gcloud CLI 并进行初始化。


创建 Docker 容器

我们需要创建一个包含所有依赖项和应用程序代码的 Docker 容器。下方展示了容器启动时运行的入口点命令以及 Dockerfile 定义。


创建入口脚本

创建一个包含以下内容的 run.sh 脚本:

#!/bin/bashAPP_PID=
stopRunningProcess() {# Based on https://linuxconfig.org/how-to-propagate-a-signal-to-child-processes-from-a-bash-scriptif test ! "${APP_PID}" = '' && ps -p ${APP_PID} > /dev/null ; then> /proc/1/fd/1 echo "Stopping ${COMMAND_PATH} which is running with process ID ${APP_PID}"kill -TERM ${APP_PID}> /proc/1/fd/1 echo "Waiting for ${COMMAND_PATH} to process SIGTERM signal"wait ${APP_PID}> /proc/1/fd/1 echo "All processes have stopped running"else> /proc/1/fd/1 echo "${COMMAND_PATH} was not started when the signal was sent or it has already been stopped"fi
}trap stopRunningProcess EXIT TERMsource ${VIRTUAL_ENV}/bin/activatestreamlit run ${HOME}/app/streamlit_app.py &
APP_ID=${!}wait ${APP_ID}

创建 Dockerfile

Docker 通过读取 Dockerfile 中的指令来构建镜像。Dockerfile 是一个文本文档,其中包含用户可以在命令行上调用的所有命令来组装镜像。更多信息请参阅 Dockerfile 参考文档。docker build 命令会根据 Dockerfile 构建镜像。docker run 命令会先在指定的镜像上创建一个容器,然后使用指定的命令启动它。

以下是一个示例 Dockerfile,你可以将其添加到项目根目录中。

from python:3.9-slimRUN groupadd --gid 1000 appuser \&& useradd --uid 1000 --gid 1000 -ms /bin/bash appuserRUN pip3 install --no-cache-dir --upgrade \pip \virtualenvRUN apt-get update && apt-get install -y \build-essential \software-properties-common \gitUSER appuser
WORKDIR /home/appuserRUN git clone https://github.com/streamlit/streamlit-example.git appENV VIRTUAL_ENV=/home/appuser/venv
RUN virtualenv ${VIRTUAL_ENV}
RUN . ${VIRTUAL_ENV}/bin/activate && pip install -r app/requirements.txtEXPOSE 8501COPY run.sh /home/appuser
ENTRYPOINT ["./run.sh"]

重要提示

如开发流程中所述,对于 Streamlit 1.10.0 及更高版本,无法从 Linux 发行版的根目录运行 Streamlit 应用。您的主脚本应存放在非根目录的其他目录中。若尝试从根目录运行 Streamlit 应用,Streamlit 会抛出 FileNotFoundError: [Errno 2] No such file or directory 错误。更多详情请参阅 GitHub 议题 #5239。

如果您使用的是 Streamlit 1.10.0 或更高版本,必须将 WORKDIR 设置为非根目录的其他目录。例如,可以按照上方示例 Dockerfile 所示,将 WORKDIR 设为 /home/appuser


构建 Docker 镜像

将上述文件 (run.shDockerfile) 放在同一文件夹中,然后构建 Docker 镜像:

docker build --platform linux/amd64 -t gcr.io/$GCP_PROJECT_ID/k8s-streamlit:test .

重要提示

请将上述命令中的 $GCP_PROJECT_ID 替换为您的 Google Cloud 项目名称。


将Docker镜像上传至容器仓库

下一步是将Docker镜像上传到容器仓库。本示例中,我们将使用Google Container Registry (GCR)。首先启用Container Registry API。登录Google Cloud并进入项目的Container Registry页面,点击启用

现在可以基于上一步构建的Docker镜像,将其推送至项目的GCR。请确保在docker push命令中将$GCP_PROJECT_ID替换为您的实际项目名称:

gcloud auth configure-docker docker push gcr.io/$GCP_PROJECT_ID/k8s-streamlit:test


创建 Kubernetes 部署

完成此步骤需要准备以下条件:

  • 正在运行的 Kubernetes 服务
  • 可生成 TLS 证书的自定义域名
  • 可配置域名指向应用 IP 的 DNS 服务

由于前一步骤已将镜像上传至容器仓库,我们可以通过以下配置在 Kubernetes 中运行它。


安装并运行 Kubernetes

确保你的机器上已安装并运行 Kubernetes 客户端 kubectl


配置 Google OAuth 客户端和 oauth2-proxy

要配置 Google OAuth 客户端,请参考 Google Auth Provider。配置 oauth2-proxy 使用所需的 OAuth Provider Configuration,并更新 config map 中的 oath2-proxy 配置。

以下配置包含一个 ouath2-proxy 边车容器,用于处理与 Google 的认证交互。更多详情可查阅 oauth2-proxy 代码库。


创建 Kubernetes 配置文件

创建一个名为 k8s-streamlit.yaml 的 YAML 配置文件:

apiVersion: v1
kind: ConfigMap
metadata:name: streamlit-configmap
data:oauth2-proxy.cfg: |-http_address = "0.0.0.0:4180"upstreams = ["http://127.0.0.1:8501/"]email_domains = ["*"]client_id = "<GOOGLE_CLIENT_ID>"client_secret = "<GOOGLE_CLIENT_SECRET>"cookie_secret = "<16, 24, or 32 bytes>"redirect_url = <REDIRECT_URL>
---
apiVersion: apps/v1
kind: Deployment
metadata:name: streamlit-deploymentlabels:app: streamlit
spec:replicas: 1selector:matchLabels:app: streamlittemplate:metadata:labels:app: streamlitspec:containers:- name: oauth2-proxyimage: quay.io/oauth2-proxy/oauth2-proxy:v7.2.0args: ["--config", "/etc/oauth2-proxy/oauth2-proxy.cfg"]ports:- containerPort: 4180livenessProbe:httpGet:path: /pingport: 4180scheme: HTTPreadinessProbe:httpGet:path: /pingport: 4180scheme: HTTPvolumeMounts:- mountPath: "/etc/oauth2-proxy"name: oauth2-config- name: streamlitimage: gcr.io/GCP_PROJECT_ID/k8s-streamlit:testimagePullPolicy: Alwaysports:- containerPort: 8501livenessProbe:httpGet:path: /_stcore/healthport: 8501scheme: HTTPtimeoutSeconds: 1readinessProbe:httpGet:path: /_stcore/healthport: 8501scheme: HTTPtimeoutSeconds: 1resources:limits:cpu: 1memory: 2Girequests:cpu: 100mmemory: 745Mivolumes:- name: oauth2-configconfigMap:name: streamlit-configmap
---
apiVersion: v1
kind: Service
metadata:name: streamlit-service
spec:type: LoadBalancerselector:app: streamlitports:- name: streamlit-portprotocol: TCPport: 80targetPort: 4180

重要提示

虽然上述配置可以直接复制使用,但你需要自行配置 oauth2-proxy,并确保使用正确的 GOOGLE_CLIENT_IDGOOGLE_CLIENT_IDGCP_PROJECT_IDREDIRECT_URL 参数。

现在,通过 kubectl create 命令在 Kubernetes 中根据文件创建配置:

kubctl create -f k8s-streamlit.yaml


配置 TLS 支持

由于您正在使用 Google 身份验证,因此需要配置 TLS 支持。具体方法请参阅 TLS 配置文档。


验证部署

创建部署和服务后,我们需要等待几分钟让公共IP地址生效。可以通过运行以下命令检查其就绪状态:

kubectl get service streamlit-service -o jsonpath='{.status.loadBalancer.ingress[0].ip}'

分配公网IP后,您需要在DNS服务中配置一条指向该IP地址的A记录


上一页:Docker

下一页:知识库



欢迎使用 Streamlit 社区云

https://docs.streamlit.io/deploy/streamlit-community-cloud


通过 Streamlit 社区云,您可以免费创建、部署和管理 Streamlit 应用。与世界分享您的应用,并构建个性化个人主页展示作品。您的社区云账户可直接连接 GitHub 仓库(公开或私有)。大多数应用只需几分钟即可启动。社区云会处理所有容器化工作,部署变得轻而易举。您可以自带代码,或从我们热门模板开始开发。只需在 GitHub 中修改代码,就能快速原型设计、探索和更新应用——大多数变更会即时生效!

希望免去本地开发环境配置的麻烦?社区云可帮助您快速配置云端开发环境。仅需几次点击,即可开始编码或编辑 Streamlit 应用。详见编辑应用。

前往我们的社区云快速入门,快速完成账户创建、示例应用部署及通过 GitHub Codespaces 编辑的全流程。若您尚未构建首个 Streamlit 应用,请参阅Streamlit 入门指南。

  • 立即开始。了解 Streamlit 社区云账户及创建方法。
  • 部署应用。获取应用部署的逐步指南。
  • 管理应用。查看日志、重启应用、设置收藏等操作。还可直接进入 GitHub codespace 云端编辑应用。
  • 分享应用。分享或嵌入您的应用。
  • 账户管理。更新邮箱、管理连接或删除账户。

上一页:核心概念
下一页:快速开始


开始使用 Streamlit Community Cloud

https://docs.streamlit.io/deploy/streamlit-community-cloud/get-started


欢迎来到 Streamlit Community Cloud,在这里你可以与世界分享你的 Streamlit 应用!无论你已经创建了第一个 Streamlit 应用,还是刚刚入门,这里都是正确的起点。

首先,你需要创建 Streamlit Community Cloud 账户才能开始部署应用。


快速入门

创建您的账户并尽快部署一个示例应用。直接通过 GitHub Codespaces 开始编码。

https://docs.streamlit.io/deploy/streamlit-community-cloud/get-started/quickstart?slug=deploy&slug=streamlit-community-cloud&slug=get-started


信任与安全

安全至上!如果您想在开始之前了解我们如何处理您的数据,我们已为您准备好相关文档。

https://docs.streamlit.io/deploy/streamlit-community-cloud/get-started/trust-and-security?slug=deploy&slug=streamlit-community-cloud&slug=get-started


如果您需要帮助构建第一个 Streamlit 应用,请阅读 Streamlit 库的入门指南。如果想通过示例应用快速上手,可以查看我们的应用展示库。无论哪种方式,只需几分钟即可创建您的第一个应用。

如果需要比快速入门更详细的指导,请尝试以下步骤:


  • 创建账户。在注册 Streamlit Community Cloud 账户时,查看所有选项并获取完整说明。
  • 关联 GitHub 账户。创建 Community Cloud 账户后,连接 GitHub 以实现源代码管理。
  • 探索工作区。快速浏览您的 Community Cloud 工作区,了解所有功能运作的核心区域。
  • 通过模板部署应用。使用模板在几分钟内启动并运行您自己的应用。
  • 分叉并编辑公开应用。从高起点开始!分叉一个公开应用并直接投入代码开发。

上一页:Streamlit Community Cloud
下一页:快速入门


快速入门

https://docs.streamlit.io/deploy/streamlit-community-cloud/get-started/quickstart

本文档提供创建Streamlit社区云账户、部署示例应用并通过GitHub Codespaces开始编辑的简明步骤指南。如需了解其他选项和完整说明,请从创建账户开始。

在此过程中,您需要使用GitHub账户登录。社区云将使用您GitHub账户的邮箱来创建社区云账户。如需其他登录方式,请参阅创建账户。


前提条件

  • 您必须拥有一个 GitHub 账户。

注册 Streamlit Community Cloud

1、访问 share.streamlit.io。

2、点击"继续登录"。

3、点击"通过 GitHub 继续"。

4、输入您的 GitHub 凭据并按照 GitHub 的认证提示操作。

5、填写账户信息,最后点击底部的"我接受"。


为你的公共仓库添加访问权限

1、在左上角点击"Workspaces"。

将你的GitHub账户连接到新的Community Cloud账户


1、从下拉菜单中选择"Connect GitHub account"。

2、输入你的GitHub凭证并按照GitHub的认证提示操作。

3、点击"Authorize streamlit"。

授权Community Cloud连接你的GitHub账户


可选:添加对私有仓库的访问权限

1、在左上角点击您的 GitHub 用户名。

访问工作区设置


1、从下拉菜单中选择 “Settings”(设置)。

2、在对话框左侧选择 “Linked accounts”(关联账户)。

3、在 “Source control”(源代码管理)下方点击 “*Connect here arrow_forward”(点击此处连接)。

4、点击 “Authorize streamlit”(授权 Streamlit)。


授权 Community Cloud 连接您的私有 GitHub 仓库


从模板创建新应用

1、在右上角点击"创建应用"。

在Streamlit Community Cloud工作区中创建新应用


1、当系统询问"您已有现成应用吗?“时,选择"没有,从模板创建”。

2、在左侧模板列表中选择"空白应用"。

3、底部选择"在GitHub Codespaces中打开…"选项。

4、最后点击底部的"部署"按钮。


在 GitHub Codespaces 中编辑你的应用

1、等待 GitHub 设置你的代码空间。

完全初始化代码空间可能需要几分钟时间。当 Visual Studio Code 编辑器出现在代码空间后,安装 Python 并启动 Streamlit 服务器还需要几分钟。完成后,会显示一个分屏视图:左侧是代码编辑器,右侧是运行中的应用。默认情况下,代码编辑器会打开两个标签页:仓库的 readme 文件和应用的主入口文件。

你的新 GitHub Codespace


2、在左侧面板中找到应用的主入口文件 (streamlit_app.py),修改第 3 行代码,在 st.title 中添加 “Streamlit”。

-st.title("🎈 My new app")
+st.title("🎈 My new Streamlit app")

每次编辑后,文件会自动保存在你的代码空间中。

3、输入更改后片刻,右侧应用会显示重新运行提示。点击"始终重新运行"。

编辑示例Streamlit应用的标题


如果重新运行提示在你点击前消失,可以将鼠标悬停在溢出菜单图标(more_vert)上使其重新出现。

4、可选:继续编辑并观察数秒内的变化。


发布您的更改

1、在左侧导航栏中,点击源代码管理图标。

查看已部署的Streamlit应用


1、在左侧的源代码管理侧边栏中,为您的提交输入一个名称。

2、点击"Commit"。

查看已部署的Streamlit应用


1、要暂存并提交所有更改,在确认对话框中点击""。您的更改将在代码空间中本地提交。

2、要将提交推送到GitHub,在左侧的源代码管理侧边栏中点击"cached* 1 *arrow_upward"。

3、要将提交推送到"origin/main",在确认对话框中点击"确定"。

您的更改现已保存到GitHub仓库。Community Cloud将立即在您部署的应用中反映这些更改。

4、可选:要查看更新后的已发布应用,请返回share.streamlit.io工作区的"我的应用"部分,并点击您的应用。


停止或删除你的代码空间

当你停止与代码空间交互时,GitHub通常会为你自动停止代码空间。但最可靠避免资源不必要占用的方式,是在完成工作后手动停止或删除代码空间。

  1. 访问 github.com/codespaces。页面底部会列出你所有的代码空间,点击对应代码空间的溢出菜单图标(more_horiz)。

停止或删除GitHub代码空间


  1. 如需后续继续工作,点击"停止代码空间";否则点击"删除"。

停止GitHub代码空间


  1. 恭喜!你已成功将应用部署至Streamlit社区云。🎉 返回 share.streamlit.io/ 工作区,继续部署其他Streamlit应用。

查看已部署的Streamlit应用


上一页:快速开始
下一页:创建账户


创建您的账户

https://docs.streamlit.io/deploy/streamlit-community-cloud/get-started/create-your-account

在开始部署供全球用户访问的应用程序之前,您需要注册一个Streamlit Community Cloud账户。

每个Community Cloud账户都关联一个电子邮箱,且不允许两个账户使用相同的邮箱地址。当您分享私有应用时,将通过邮箱地址来分配查看权限。此外,两个账户不能使用相同的源代码控制(GitHub账户)。如果您尝试使用相同的源代码控制创建第二个Community Cloud账户,系统会自动合并这两个账户。


注册

Community Cloud 提供以下三种登录方式供您选择:

  • 通过电子邮件发送一次性验证码
  • 使用 Google 账号登录
  • 使用 GitHub 账号登录

重要提示

即使您通过 GitHub 登录,身份验证流程仍会将您的电子邮件地址返回给 Community Cloud。如果您通过 GitHub 登录,更改 GitHub 账户的电子邮件可能会影响您的 Community Cloud 账户。

  1. 访问 share.streamlit.io。
  2. 点击“继续登录”。
  3. 从以下三个选项中选择一种方式继续。

选项1:使用邮件验证码登录

  1. 在"邮箱"字段中输入您的电子邮箱地址。
  2. 点击"继续"。(如遇提示,请完成人机验证。)
  3. 前往您的收件箱,复制六位数的一次性验证码。该验证码有效期为十分钟。
  4. 返回验证页面,输入您的验证码。(如遇提示,请完成人机验证。)

选项2:使用Google登录

  1. 点击"通过Google继续"。
  2. 输入您的Google账号凭证,并按照Google的身份验证提示操作。

选项3:通过GitHub登录

  1. 点击"Continue with GitHub"按钮。

  2. 输入您的GitHub凭据,并按照GitHub的认证提示操作。

    这会将"Streamlit Community Cloud" OAuth应用添加到您的GitHub账户。该应用仅用于在您登录Community Cloud时传递您的邮箱信息。在下一页,您需要完成额外步骤以允许Community Cloud访问您的代码仓库。有关使用和查看账户中OAuth应用的更多信息,请参阅GitHub文档中的使用OAuth应用。


  1. 填写您的信息,然后点击底部的"Continue"按钮。

    "Primary email"字段会预填您登录时使用的邮箱。如果您在账户设置表单中修改此邮箱,仅会影响营销邮件;不会反映在您的新账户上。如需在账户创建后修改关联邮箱,请参阅更新邮箱地址。


完成注册

恭喜您成功创建了 Streamlit Community Cloud 账户!请注意,左上角"工作区"旁边会出现警告图标(warning),这表示您的账户尚未与 GitHub 连接。即使您是通过 GitHub 登录创建的账户,目前仍无权访问您的代码仓库。请继续前往下一页完成 GitHub 账户的连接。


上一页:快速入门
下一页:连接您的 GitHub 账户


连接你的 GitHub 账户

https://docs.streamlit.io/deploy/streamlit-community-cloud/get-started/connect-your-github-account

将 GitHub 连接到你的 Streamlit Community Cloud 账户后,你可以直接从存储在代码库中的文件部署应用。系统还能检查这些文件的更新情况,并自动更新你的应用。首次将 GitHub 账户连接到 Community Cloud 账户时,你可以将公共代码库中的应用部署到 Community Cloud。如需从私有代码库部署,可以为 Community Cloud 授予额外权限。有关这些权限的更多信息,请参阅 GitHub OAuth 范围。


重要提示

要部署应用程序,您必须拥有其代码仓库的管理员权限。如果没有管理员权限,请联系仓库所有者或通过 fork 仓库创建自己的副本。如需更多帮助,请访问我们的社区论坛。

如果您是 GitHub 组织的成员,每个 GitHub OAuth 授权提示底部都会显示该组织名称。这种情况下,我们建议在连接 GitHub 账户前先阅读本页末尾关于组织访问权限的说明。您必须是 GitHub 组织的所有者才能授予该组织的访问权限。


前提条件

  • 您必须拥有一个 Community Cloud 账户。请参阅创建账户。
  • 您必须拥有一个 GitHub 账户。

添加对公共仓库的访问权限

1、在左上角点击"工作区 *警告*"。

将您的GitHub账户连接到新的Community Cloud账户


1、从下拉菜单中选择"连接GitHub账户"。

2、输入您的GitHub凭据并按照GitHub的认证提示操作。

3、点击"授权Streamlit"。

授权Community Cloud连接您的GitHub账户


这会将"Streamlit" OAuth应用添加到您的GitHub账户。该授权允许Community Cloud访问您的公共仓库并为您创建代码空间。在下一节中,您还可以选择允许Community Cloud访问私有仓库。有关使用和查看账户中OAuth应用的更多信息,请参阅GitHub文档中的使用OAuth应用。


可选:添加对私有仓库的访问权限

当您的 Community Cloud 账户已具备从公共仓库部署的权限后,可按照以下额外步骤授予其对私有仓库的访问权限。

  1. 在左上角点击您的 GitHub 用户名。

访问工作区设置


  1. 从下拉菜单中点击"Settings"。
  2. 在对话框左侧选择"Linked accounts"。
  3. 在"Source control"下方点击"Connect here *arrow_forward*"。
  4. 点击"Authorize streamlit"。

授权 Community Cloud 连接您的私有 GitHub 仓库


组织访问权限

要从 GitHub 组织拥有的仓库部署应用,Community Cloud 必须获得访问该组织仓库的权限。当您连接 GitHub 账号时,如果您是某个 GitHub 组织的成员,OAuth 授权提示中将包含标有"组织访问权限"的部分。

包含组织访问权限的 GitHub OAuth 提示


如果您已连接 GitHub 账号但需要添加对某个组织的访问权限,请按照管理 GitHub 连接中的步骤操作:先断开 GitHub 账号连接,然后重新开始。另外,如果您不是组织的所有者,可以请所有者为自己创建 Community Cloud 账号并直接添加权限。


您拥有的组织

对于您拥有的任何组织,如果之前未授予或拒绝授权,您可以在点击"Authorize streamlit"之前点击"Grant"。

授权您拥有的 GitHub 组织上的 Streamlit


他人拥有的组织

对于您不拥有的组织,如果之前未授予或拒绝授权,您可以在点击"Authorize streamlit"之前点击"Request"。

授权您的Streamlit访问他人拥有的GitHub组织


先前或待处理的授权

如果有人已开始为您的组织授权 Streamlit 的流程,OAuth 提示将显示当前状态。


已授权访问

如果组织已授予 Streamlit 访问权限,OAuth 提示界面会显示绿色勾选标记(check)。

组织对Streamlit的授权许可


待处理访问权限

如果之前已发送请求但尚未获得批准,OAuth 提示会显示"访问请求待处理"。请联系组织所有者,在 GitHub 上接受该请求。

组织内 Streamlit 的待授权状态


访问被拒

如果之前发送的请求已被拒绝,OAuth 提示框会显示一个红色 X 图标(关闭)。此时,组织所有者需要从 GitHub 授权 Streamlit。请参阅 GitHub 关于 OAuth 应用与组织 的文档。

组织对 Streamlit 的授权被拒


下一步

现在您已拥有账户,可以探索您的工作区。若准备就绪,可直接开始部署您的应用。


上一页:创建账户
下一页:探索工作区


探索您的工作区

https://docs.streamlit.io/deploy/streamlit-community-cloud/get-started/explore-your-workspace


如果您刚刚完成创建账户并关联GitHub账户,恭喜!您已成功登录并准备就绪。如果您加入的是他人的工作区,可能会看到一些现有应用。


工作区

每个 GitHub 账户和组织都与 Community Cloud 中的一个工作区相关联。首次登录 Community Cloud 时,您将进入与 GitHub 用户账户关联的个人工作区。Community Cloud 的左上角会显示当前所在的工作区。

Streamlit Community Cloud 中一个全新的空工作区。左上角显示了工作区所有者。


切换工作区

要在不同工作区之间切换,请点击左上角的工作区名称并选择新的工作区。

您可按以下方式访问其他工作区:

  • 当您对某个代码库拥有写入权限,且该代码库所有者已加入 Community Cloud 时,您可以选择关联的工作区。所有者可以是 GitHub 用户或组织。
  • 如果有人通过 Community Cloud 与您共享了应用,您将看到该应用关联的工作区。此访问权限为仅查看模式。

此工作区属于用户 sammy-streamlit,该用户可访问其个人工作区及组织 we-love-streamlit 的另一个工作区。


邀请其他开发者加入您的工作区

邀请其他开发者非常简单:只需授予他们对您 GitHub 仓库的写入权限,即可实现协作开发。当他们登录 share.streamlit.io 时,就能访问您的工作区。

Streamlit Community Cloud 会继承来自 GitHub 的开发者权限。其他用户登录 Community Cloud 时,系统会自动显示与您共享的工作区。从此,你们可以一起部署、管理和分享应用。


注意:

当用户被添加到 GitHub 上的代码仓库时,最多需要 15 分钟才能在 Community Cloud 上部署或管理应用。如果用户从 GitHub 代码仓库中被移除,最多 15 分钟后,他们对该仓库应用的管理权限将被撤销。

请记住,团队中任何人在 GitHub 上更新代码时,应用都会自动为您同步更新!


我的应用

工作区中的"我的应用"部分是你部署和管理应用的操作基地。当你部署一个应用时,它会被添加到工作区的这个部分中。


部署应用

如果您已有应用保存在 GitHub 仓库中,可以直接部署。否则,Community Cloud 提供了可使用的模板。当您通过模板部署时,Community Cloud 会将项目分叉到您的 GitHub 账户,并从新的分叉进行部署。如果您尚未创建 Streamlit 应用,这是一种便捷的入门方式。

要开始部署,只需点击右上角的"创建应用"。了解更多信息,请参阅部署您的应用和从模板部署。


我的个人资料

工作区的"我的个人资料"部分允许您定制个人Streamlit应用集,与世界分享。您可以精选并展示自己的Streamlit应用,以此展现您的工作成果。


探索

如需灵感启发,请查看"探索"版块。这里展示了由 Streamlit 社区创建的应用程序画廊。您可以浏览热门和趋势应用,或搜索您感兴趣领域的应用。


上一页:连接您的 GitHub 账户
下一页:从模板部署


从模板部署应用

https://docs.streamlit.io/deploy/streamlit-community-cloud/get-started/deploy-from-a-template

Streamlit 社区云提供了多个便捷模板,让您轻松开始使用。只需选择一个模板,社区云就会将其分叉到您的账户并完成部署。您对分叉仓库所做的任何修改都会立即反映在已部署的应用中。此外,如果您不想使用本地开发环境,社区云还能轻松创建专为 Streamlit 应用开发配置的 GitHub 代码空间。


访问模板选择器

有两种方式可以开始部署模板:通过"创建应用"按钮或工作区底部的模板库。

  • 如果点击"创建应用"按钮,Community Cloud会询问"您是否已有应用?“,请选择"没有,从模板创建”。
  • 如果滚动到工作区底部的"我的应用"区域,可以看到最受欢迎的模板。直接点击某个模板,或选择"查看所有模板"。

模板选择器左侧显示可用模板列表,右侧显示当前所选模板的预览。

"从模板部署"页面在Community Cloud上


选择模板

1、从左侧的模板列表中,选择"GDP仪表盘"。

2、可选:在"新GitHub仓库名称"字段中,为您新分叉的仓库输入一个名称。

当您部署模板时,Community Cloud会将模板仓库分叉到您的GitHub账户中。Community Cloud会根据所选模板为这个仓库选择一个默认名称。如果您之前已使用默认名称部署过相同模板,Community Cloud会在名称后附加一个自动递增的数字。


注意:即使您选择了其他用户或组织的工作区,Community Cloud始终会从您个人工作区部署模板应用。也就是说,Community Cloud始终会将模板分叉到您的GitHub个人账户。若要从组织部署模板应用,请先在GitHub中手动分叉模板,然后在关联工作区中从您的分叉部署。


3、可选:在"应用URL"字段中,为您的新应用选择一个子域名。

每个Community Cloud应用都会部署到streamlit.app的一个子域名下,但您可以随时更改应用的子域名。更多信息请参阅应用设置。

4、可选:要立即在GitHub代码空间中编辑模板,请选择"打开GitHub代码空间…"选项。

您可以随时为应用创建代码空间。了解如何在部署应用后创建代码空间,请参阅编辑您的应用。

5、可选:要更改Python版本,请点击屏幕底部的"高级设置",选择Python版本,然后点击"保存"。


重要提示

应用部署后,若需更改Python版本,必须先删除并重新部署应用。

  1. 在底部点击"Deploy"。

查看您的应用

  • 如果您未选择打开GitHub Codespaces的选项,系统会将您重定向至新创建的应用。

GDP仪表板模板应用


  • 如果您选择了打开GitHub Codespaces的选项,系统会将您重定向至新的代码空间,完全初始化可能需要数分钟。当Visual Studio Code编辑器在代码空间中显示后,安装Python和启动Streamlit服务器也可能需要数分钟。完成后,分屏视图会左侧显示代码编辑器,右侧显示运行中的应用。代码编辑器默认会打开两个标签页:仓库的readme文件和应用的入口文件。

代码空间中的GDP仪表板模板应用


重要提示

你在代码空间中看到的应用程序并非部署在Community Cloud上的同一实例。代码空间是一个自包含的开发环境。当你在代码空间内进行编辑时,这些修改不会离开代码空间,除非你将它们提交到代码仓库。当你将更改提交到仓库后,Community Cloud会检测到变更并更新已部署的应用程序。了解更多信息,请参阅编辑你的应用。


上一页:探索工作区
下一页:分叉并编辑公共应用


分叉并编辑公共应用

https://docs.streamlit.io/deploy/streamlit-community-cloud/get-started/fork-and-edit-a-public-app


Community Cloud的核心价值在于学习、分享和探索Streamlit的世界。对于拥有公开代码库的应用,您可以快速将其分叉到您的GitHub账户,部署自己的版本,并直接在GitHub的代码空间中开始编辑和探索Streamlit代码。

  1. 在可分叉应用的右上角,点击"Fork"按钮。

在公共应用右上角点击Fork


  1. 可选操作:在"App URL"字段中,为您的应用选择自定义子域名。

所有Community Cloud应用都默认部署到streamlit.app的子域名下,但您可以随时更改应用的子域名。更多信息请参阅应用设置。

  1. 点击"Fork!"

代码库将被分叉到您的GitHub账户。如果该代码库已被分叉过,Community Cloud会使用现有分叉。若现有分叉已关联代码空间,则会复用该代码空间。

警告:以下情况请勿使用此方法:

  • 您已存在同名代码库(但并非此应用的分叉)
  • 您已有此应用的分叉,但修改过代码库名称

如果您保留了原始代码库名称的现有分叉,Community Cloud将使用该分叉。若您之前部署过应用并打开过代码空间,系统将直接打开现有代码空间。

点击Fork确认并部署应用


  1. 等待GitHub设置代码空间

完整初始化代码空间可能需要几分钟。当Visual Studio Code编辑器出现在代码空间后,安装Python和启动Streamlit服务器还需额外时间。完成后,您将看到分屏界面:左侧是代码编辑器,右侧是运行中的应用。编辑器默认会打开两个标签页:代码库的readme文件和应用的入口文件。

点击Fork确认并部署应用


重要说明:代码空间中显示的应用并非Community Cloud上部署的实例。代码空间是独立的开发环境,您在其中的修改不会自动同步,必须提交到代码库后才会生效。当您提交更改后,Community Cloud会检测变更并更新已部署的应用。了解更多请参阅编辑应用。

  1. 按需编辑新分叉的应用。关于GitHub Codespaces的使用指南,详见编辑应用。

上一篇:从模板部署
下一篇:信任与安全


Streamlit 信任与安全

https://docs.streamlit.io/deploy/streamlit-community-cloud/get-started/trust-and-security


Streamlit 是一个将 Python 脚本转化为交互式应用的框架,它让数据科学家能够快速为公司全员创建基于数据和模型的应用。

一个简单的 Streamlit 应用如下:

import streamlit as st
number = st.slider("Pick a number: ", min_value=1, max_value=10)
st.text("Your number is " + str(number))

当你运行streamlit run my_app.py时,会在本地计算机的http://localhost:8501启动一个运行交互式应用的网页服务器。这非常适合本地开发。当需要与同事共享时,Streamlit Community Cloud 能让你将这些应用部署并运行在云端。Streamlit Community Cloud 会处理容器化的细节,并提供一个界面来轻松管理已部署的应用。

本文档概述了我们为保护你和数据安全所实施的安全措施。但安全是共同责任,你最终需要负责合理使用 Streamlit 和 Streamlit Community Cloud,包括实施适当的用户可配置安全措施和最佳实践。


产品安全


身份验证

您必须通过 GitHub 进行身份验证才能部署或管理应用。当您对关联的 GitHub 仓库没有推送或管理权限时,需要通过 Google 或一次性邮件链接来查看私有应用。一次性邮件链接在请求后 15 分钟内有效。


权限说明

Streamlit Community Cloud 会继承您在 GitHub 中设置的权限。对于某个应用对应的 GitHub 仓库,拥有写入权限的用户可以在 Streamlit 管理控制台中进行修改。但只有对仓库拥有管理员权限的用户才能部署和删除应用


网络与应用安全


数据托管

我们的物理基础设施托管并管理于基础设施即服务(IaaS)云提供商维护的安全数据中心内。Streamlit充分利用了这些平台内置的安全性、隐私性和冗余功能。我们的云服务提供商会持续监控其数据中心的风险,并通过评估确保符合行业标准。


数据删除

Community Cloud 用户可以选择删除他们部署的任何应用以及整个账户。

当用户从管理控制台删除应用时,我们会删除其源代码,包括从 GitHub 仓库复制的文件或由运行中的应用在我们系统内创建的所有文件。不过,我们会在数据库中保留一条代表该应用的记录。此记录包含应用的坐标信息:GitHub 组织或用户、GitHub 仓库、分支以及主模块文件的路径。

当用户删除账户时,我们会硬删除其所有数据,并硬删除与其账户关联的 GitHub 身份下的所有应用。这种情况下,我们不会保留上述应用坐标记录。账户删除时,我们还会删除与 Community Cloud 账户关联的任何 HubSpot 联系人。


虚拟私有云

我们的所有服务器都部署在虚拟私有云(VPC)中,通过防火墙和网络访问控制列表(ACLs)仅允许外部访问少数精选的API端点;其他所有内部服务仅在VPC内部可访问。


加密

Streamlit 应用完全通过 HTTPS 提供服务。我们仅采用高强度加密套件和 HTTP 严格传输安全(HSTS)机制,确保浏览器始终通过 HTTPS 与 Streamlit 应用交互。

所有通过公共互联网与 Streamlit 传输的数据均采用 256 位加密进行传输保护。我们的 API 和应用端点使用传输层安全协议(TLS)1.2 或更高版本。同时,我们使用 AES-256 算法对静态磁盘数据进行加密存储。


权限与认证

社区云用户账户数据的访问权限仅限于授权人员。我们采用零信任企业网络架构,实施单点登录(SSO)和多因素认证(MFA),并通过严格的密码策略确保云服务的访问安全。


事件响应

我们处理安全事件的内部流程包括检测、分析、响应、升级和缓解措施。安全公告发布于 https://streamlit.io/advisories。


渗透测试

Streamlit 定期使用第三方安全工具扫描漏洞。我们的安全团队会对 Streamlit 平台进行周期性深度渗透测试。产品开发团队会及时响应所有发现的问题或潜在漏洞,确保 Streamlit 应用的质量、安全性和可用性。


漏洞管理

我们通过持续应用最新的安全补丁来保持系统更新,并不断监控新出现的漏洞。这包括对代码仓库中的依赖项进行自动化扫描,以发现潜在的安全风险。

如果您在我们的产品或网站中发现漏洞,请通过HackerOne提交报告。


上一页:分叉并编辑公共应用
下一页:部署您的应用


在社区云上准备并部署您的应用

https://docs.streamlit.io/deploy/streamlit-community-cloud/deploy-your-app


Streamlit 社区云让您只需点击一下即可部署应用,大多数应用只需几分钟就能完成部署。如果您还没有准备好部署的应用,可以从我们的应用画廊中fork或克隆一个——您能找到机器学习、数据可视化、数据探索、A/B测试等各种应用。您也可以从模板部署应用。部署应用后,可以了解如何使用GitHub Codespaces编辑应用。


注意:如果您想在其他云服务上部署应用,请参阅我们的部署教程。


概述

接下来的页面将说明如何组织您的应用程序,并为Community Cloud正确运行它提供完整的信息。

当您的应用程序具备所需的一切条件后,部署过程非常简单。只需进入您的工作区,点击右上角的"创建应用"按钮。按照提示填写应用信息,然后点击"部署"即可。

从工作区部署新应用


准备就绪,开始吧!

  • 文件组织。了解 Community Cloud 如何初始化您的应用并解析路径。学习配置文件的存放位置。
  • 应用依赖项。了解如何在部署环境中安装依赖项和其他 Python 库。
  • 密钥管理。了解 Community Cloud 提供的安全上传 secrets.toml 数据的接口。
  • 部署您的应用 整合所有内容,将您的应用部署给全世界查看。

上一页:入门指南
下一页:文件组织


社区云应用的文件组织方式

https://docs.streamlit.io/deploy/streamlit-community-cloud/deploy-your-app/file-organization


Streamlit 社区云会复制您代码仓库中的所有文件,并从其根目录执行 streamlit run 命令。由于社区云会创建一个新的 Python 环境来运行您的应用,因此除了任何配置选项外,您还需要包含应用依赖项的声明。

您可以在代码仓库中包含多个应用,它们的入口文件可以位于仓库中的任何位置。但是,您只能有一个配置文件。本页将说明如何正确组织您的应用、配置和依赖项文件。以下示例假设您使用最常见的 requirements.txt 来声明依赖项。如后续页面所述,社区云还支持其他格式来配置您的 Python 环境。


基础示例

在以下示例中,入口文件 (your_app.py) 位于项目目录的根目录下,与声明应用依赖项的 requirements.txt 文件并列存放。

your_repository/
├── requirements.txt
└── your_app.py

如果包含自定义配置,您的配置文件必须位于仓库内的 .streamlit/config.toml 路径下。

your_repository/
├── .streamlit/
│ └── config.toml
├── requirements.txt
└── your_app.py

此外,任何需要本地提供给应用程序的文件都应包含在代码仓库中。

提示:如果您经常修改大型或二进制数据文件,导致 Git 运行缓慢,可以考虑使用 Git 大文件存储 (LFS) 作为在 GitHub 中存储大文件的更优方案。开始使用它无需对应用程序做任何修改。如果您的 GitHub 仓库启用了 LFS,它将与 Streamlit Community Cloud 无缝协作。


在子目录中使用入口文件

当您的入口文件位于子目录中时,配置文件必须保留在根目录。不过,依赖文件可以放在根目录或入口文件所在目录。

即使入口文件位于子目录中,您的依赖文件仍可存放在代码库的根目录下。

your_repository/
├── .streamlit/
│ └── config.toml
├── requirements.txt
└── subdirectory└── your_app.py

或者,您的依赖文件可以与入口点文件位于同一子目录中。

your_repository/
├── .streamlit/
│ └── config.toml
└── subdirectory├── requirements.txt└── your_app.py

虽然大多数 Streamlit 命令会相对于入口文件解析路径,但部分命令会相对于工作目录解析路径。在 Community Cloud 上,工作目录始终是代码仓库的根目录。因此,在本地开发和测试应用时,请从代码仓库的根目录执行 streamlit run 命令。这样可以确保路径在本地环境与 Community Cloud 之间的解析方式保持一致。

在前面的示例中,具体操作如下:

cd your_repository
streamlit run subdirectory/your_app.py

提示:请始终在路径中使用正斜杠作为分隔符。Community Cloud 无法处理反斜杠分隔的路径。


单仓库中的多应用管理

当你在同一个代码仓库中管理多个应用时,这些应用会共享位于仓库根目录下的同一份配置文件(.streamlit/config.toml)。依赖文件可以选择共享或为每个应用单独配置。若需为不同应用指定独立的依赖文件,请将每个入口文件与其对应的依赖文件放置在各自的子目录中。要了解社区云平台如何优先解析依赖文件,请参阅应用依赖文档。


上一页:应用部署
下一页:应用依赖


为你的社区云应用配置依赖项

https://docs.streamlit.io/deploy/streamlit-community-cloud/deploy-your-app/app-dependencies

应用构建失败的主要原因通常是Streamlit社区云无法找到你的依赖项!你的应用可能涉及两种依赖:Python依赖和外部依赖。Python依赖是指那些你通过import引入脚本的其他Python包(就像Streamlit本身一样)。外部依赖相对少见,但包括脚本正常运行所需的其他软件。由于社区云运行在Linux系统上,这些外部依赖将通过apt-get在Python环境之外安装。

为确保依赖项正确安装,你需要:

  1. 为Python依赖添加一个requirements文件
  2. 可选:如需管理外部依赖,可添加packages.txt文件

注意:

Python 依赖文件(requirements files)应当放置在代码库的根目录下,或者与应用程序入口文件所在的同一目录中。


添加 Python 依赖项

脚本中的每个 import 语句都会引入一个 Python 依赖项。你需要通过 Python 包管理器告知 Community Cloud 如何安装这些依赖项。我们推荐使用基于 piprequirements.txt 文件。

注意

  • 不要将 mathrandomdistutils 等 Python 内置库 包含在 requirements.txt 文件中,这些库属于 Python 的一部分,无需单独安装。
  • Community Cloud 默认已安装 streamlit,除非需要固定或限制版本,否则不必显式包含它。
  • 如果部署应用时未提供 requirements.txt 文件,应用将仅运行在已安装 streamlit(及其依赖项)的环境中。

重要提示

使用的 Python 版本非常关键!不同 Python 版本的内置库会发生变化,其他库也可能有特定的版本要求。每当 Streamlit 支持新的 Python 版本时,Community Cloud 会迅速跟进并将默认 Python 版本更新为该新版本。请务必在开发应用时使用与部署时相同的 Python 版本。有关部署应用时设置 Python 版本的更多信息,请参阅可选:配置密钥和 Python 版本。

如果你的脚本如下所示,则无需额外依赖项,因为 pandasnumpy 已作为 streamlit 的直接依赖项安装。同样,mathrandom 是 Python 的内置模块。

import streamlit as st
import pandas as pd
import numpy as np
import math
import randomst.write("Hi!")

然而,一个有效的 requirements.txt 文件应该是:

streamlit
pandas
numpy

或者,如果需要指定特定版本,另一个有效的示例如下:

streamlit==1.24.1
pandas>2.0
numpy<=1.25.1

在上面的示例中,streamlit 被固定为版本 1.24.1pandas 必须严格大于 2.0 版本,而 numpy 必须等于或低于 1.25.1 版本。requirements.txt 文件中的每一行实际上就是您希望在云环境中通过 pip install 安装的内容。

提示:要了解社区云 Python 环境的限制,请参阅社区云状态和限制。


其他 Python 包管理工具

除了 pip 之外,还有其他 Python 包管理工具可供选择。如果你想考虑替代 requirements.txt 文件的方案,Community Cloud 会优先使用它找到的第一个依赖文件。Community Cloud 会先搜索入口文件所在的目录,然后搜索代码仓库的根目录。在每个位置,依赖文件的优先级顺序如下:

识别的文件名Python 包管理工具
uv.lockuv
Pipfilepipenv
environment.ymlconda
requirements.txtpip†
pyproject.tomlpoetry

† 为了提高效率,Community Cloud 会尝试用 uv 处理 requirements.txt,但必要时会回退到 pipuv 通常比 pip 更快、更高效。


警告

你的应用应当仅使用一个依赖文件。如果包含多个文件(例如 requirements.txtenvironment.yaml),系统将按照上述规则仅处理第一个遇到的依赖文件。其中,入口点文件所在目录中的依赖文件优先级高于代码库根目录下的依赖文件。


apt-get 依赖项

许多应用并不需要 packages.txt 文件。但如果你的脚本需要安装非 Python 包的软件,就必须创建 packages.txt 文件。Community Cloud 基于 Debian Linux 系统,所有需要通过 apt-get install 安装的软件都必须列在这个文件中。要查看可安装的软件包列表,请参阅 Debian 11(代号 “bullseye”)的软件包列表。

当代码库根目录存在 packages.txt 文件时,我们会自动检测并解析该文件,安装其中列出的所有软件包。更多关于 apt-get 的用法可查阅 Linux 文档。

packages.txt 中添加 apt-get 依赖项时,每个包名单独占一行。例如 mysqlclient 这个 Python 包需要先安装其他软件才能正常工作,对应的有效 packages.txt 文件内容如下:

build-essential
pkg-config
default-libmysqlclient-dev

上一页:文件组织

下一页:密钥管理


为你的社区云应用管理密钥

https://docs.streamlit.io/deploy/streamlit-community-cloud/deploy-your-app/secrets-management


简介

当您需要连接数据源时,通常需要处理凭据或密钥。将未加密的密钥存储在git仓库中是一种不良实践。如果应用程序需要访问敏感凭据,推荐解决方案是将这些凭据存储在未提交到仓库的文件中,并通过环境变量传递它们。


如何使用密钥管理

Community Cloud 允许您在应用设置中保存密钥。在本地开发时,您可以通过代码中的 st.secrets.streamlit/secrets.toml 文件读取密钥。但请注意,切勿将此 secrets.toml 文件提交至代码仓库。当部署应用时,您可以将 secrets.toml 文件内容粘贴至"高级设置"对话框。后续您随时可以通过工作区中的应用设置来更新密钥。


前提条件

  • 您需要了解如何使用 st.secretssecrets.toml。具体请参阅密钥管理。

高级设置

在部署应用时,您可以通过"高级设置"来配置密钥。应用部署完成后,您仍可通过应用设置查看或更新这些密钥。完整的部署流程将在下一页详细说明,但"高级设置"对话框的界面如下所示:

部署应用的高级设置


只需将本地secrets.toml文件的内容复制粘贴到对话框的"Secrets"字段中。点击"保存"提交更改后,操作即完成!


编辑应用的密钥

如需为已部署的应用添加或编辑密钥,可通过应用设置访问密钥。详见查看或更新密钥。


上一页:应用依赖项
下一页:开始部署!


在社区云上部署您的应用

https://docs.streamlit.io/deploy/streamlit-community-cloud/deploy-your-app/deploy

按照前几页所述完成文件组织和添加依赖项后,您就可以将应用部署到社区云了!


选择您的代码库和入口文件

1、在 share.streamlit.io 的工作区中,点击右上角的"创建应用"按钮。

从工作区部署新应用


2、当系统询问"您是否已有应用?“时,选择"是的,我有应用”。

3、填写您的代码库、分支和文件路径。或者,要直接粘贴 GitHub 上 your_app.py 的链接,可点击"粘贴 GitHub URL"。

4、可选操作:在"应用 URL"字段中,为您的应用选择一个子域名。

所有社区云应用都会部署到 streamlit.app 的子域名下,但您可以随时修改应用的子域名。更多信息请参阅应用设置。在以下示例中,社区云会将应用部署到 https://red-balloon.streamlit.app/

填写应用信息以完成部署


虽然社区云会尝试推荐可用的代码库和文件,但这些推荐可能不完整。如果任何字段未列出您需要的信息,请手动输入。


可选:配置密钥和Python版本


注意:Streamlit Community Cloud 支持所有仍在接收安全更新的 Python 版本。默认使用 Python 3.12。您可以在“高级设置”模态框的“Python 版本”下拉菜单中选择所需版本。如果应用运行的 Python 版本不再受支持,系统会强制将其升级至最旧的支持版本,可能导致应用中断。

  1. 点击“高级设置”。
  2. 选择所需的 Python 版本。
  3. 如需定义环境变量和密钥,请在“Secrets”字段中粘贴 secrets.toml 文件的内容。

更多信息,请参阅 Community Cloud 密钥管理。
4. 点击“保存”。


部署应用的高级设置


查看应用启动过程

您的应用正在部署中,您可以实时观察其启动状态。大多数应用能在几分钟内完成部署,但如果应用依赖较多,可能需要更长时间。初次部署后,代码变更会立即反映在应用中。依赖项的变更会即时处理,但安装可能需要几分钟。

查看应用启动


注意:右侧的Streamlit Community Cloud日志仅对拥有仓库写入权限的用户可见。这些日志可帮助您调试应用问题。了解更多关于Streamlit Community Cloud日志的信息。


查看您的应用

大功告成!您的应用现在拥有一个专属URL,可以与他人分享。了解更多关于如何与观众分享您的应用的信息。


唯一子域名

当您部署应用时,如果"自定义子域名(可选)"字段留空,系统会根据您的GitHub仓库自动生成一个遵循特定结构的URL。该URL的子域名由以下部分通过短横线连接组成:

  • 仓库所有者(GitHub用户或组织名)
  • 仓库名称
  • 入口文件路径
  • 分支名称(若非mainmaster分支)
  • 随机哈希值
https://[GitHub username or organization]-[repo name]-[app path]-[branch name]-[short hash].streamlit.app

例如,以下应用由 streamlit 组织部署。代码仓库为 demo-self-driving,应用名称为根目录下的 streamlit_app.py。分支名称为 master,因此未包含在内。

https://streamlit-demo-self-driving-streamlit-app-8jya0g.streamlit.app

自定义子域名

设置自定义子域名能让分享应用变得更加便捷,因为你可以选择一个容易记忆的名称。要了解如何更改已部署应用的子域名,请参阅查看或更改应用的URL。


上一页:密钥管理
下一页:管理应用


管理你的应用

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-app

你可以在 share.streamlit.io 的工作区或直接通过 <your-custom-subdomain>.streamlit.app 来管理已部署的应用。你可以查看、部署、删除、重启应用,或将其标记为收藏。


从工作区管理您的应用

Streamlit Community Cloud 采用工作区进行组织,它会根据 GitHub 仓库所有者自动对应用进行分组。您当前所处的工作区显示在界面左上角。更多详情,请参阅切换工作区。

部署或管理任何应用时,请务必先切换到与该仓库所有者匹配的工作区。


应用排序

如果工作区中有多个应用,您可以通过将其标记为收藏(星标)来置顶应用。更多信息请参阅收藏应用。


应用溢出菜单

每个应用右侧都有一个通过溢出图标(more_vert)访问的菜单。

  • 使用 Codespaces 编辑 — 参见使用 GitHub Codespaces 编辑应用
  • 重启 — 参见重启应用
  • 删除 — 参见删除应用
  • 分析 — 参见应用分析
  • 设置 — 参见应用设置

工作区中的应用溢出菜单


如果您对应用仅有查看权限,应用菜单中的所有选项都将被禁用,除了分析功能。

工作区中的仅查看应用溢出菜单


直接从应用管理你的应用

你可以直接通过应用本身来管理已部署的应用!只需确保你已登录到 Community Cloud,然后访问你的应用即可。


云端日志

1、在您的应用 <your-custom-subdomain>.streamlit.app 中,点击右下角的"管理应用"。

从应用右下角的“管理应用”访问云端日志


2、点击"管理应用"后,您将能够查看应用的日志。这是排查应用问题的主要途径。

Streamlit Community Cloud 日志


3、通过点击云端日志底部的溢出图标(more_vert),可以访问更多开发者选项。如需便捷下载日志,请点击"下载日志"。

下载您的 Streamlit Community Cloud 日志


通过云端日志还可访问以下选项:

  • 分析 — 查看应用分析。
  • 重启应用 — 参见重启应用。
  • 删除应用 — 参见删除应用。
  • 设置 — 查看应用设置。
  • 您的应用 — 跳转至应用工作区。
  • 文档 — 跳转至我们的文档。
  • 支持 — 前往我们的论坛!


应用框架

<your-custom-subdomain>.streamlit.app 上的应用中,您可以像本地开发时一样随时访问应用框架。部署应用的选项已被移除,但您仍可在此处清除缓存。

Streamlit 社区云中的应用菜单


在GitHub中管理你的应用


更新你的应用

你的GitHub仓库是应用的源代码来源,这意味着每当你向仓库推送更新时,几乎可以实时看到应用中的变化。试试看吧!

Streamlit还能智能检测你是否修改了依赖项。如果检测到依赖变更,它会自动为你执行完整的重新部署——这会花费稍多一点时间。但由于大多数更新不涉及依赖变更,通常你都能实时看到应用更新。


添加或移除依赖项

您可以随时通过更新 requirements.txt(Python 依赖项)或 packages.txt(Linux 依赖项)来添加或移除依赖项,并将更改提交到 GitHub 仓库。Community Cloud 会检测到依赖项的变更,并自动触发(重新)安装流程。

最佳实践是在 requirements.txt 中固定 Streamlit 的版本号。否则,系统可能会在您不知情的情况下自动升级版本,这可能导致意外结果(例如当我们弃用 Streamlit 的某个功能时)。


应用资源与限制


资源限制

所有社区云用户享有相同的资源访问权限,并受相同的限制约束。这些限制可能随时变更且不另行通知。如果您的应用达到或超过限制,可能会因节流而变慢或完全无法运行。截至2024年2月,主要限制如下:

  • CPU:最低0.078核,最高2核
  • 内存:最低690MB,最高2.7GB
  • 存储:无最低限制,最高50GB

当应用资源耗尽时,会出现以下症状:

  • 应用运行缓慢
  • 应用显示"🤯 该应用已超出资源限制"
  • 应用显示"😦 糟糕"

造福世界

Streamlit 为具有公益性质的应用程序提供更多资源支持。通常,这类应用程序由教育机构或非营利组织使用,属于开源项目的一部分,或以某种方式让世界受益。如果您的应用程序并非主要由营利性公司使用,您可以申请增加资源。


优化你的应用

如果你的应用运行缓慢或出现上述错误页面,我们强烈建议你先阅读并实施以下博客文章中的建议,以防止应用触及资源限制,并检测是否存在内存泄漏问题:

  • 常见应用问题:资源限制
  • 修复应用内存泄漏的3个步骤

如果应用超出资源限制,开发者和用户都会看到"😦 糟糕"的提示。

应用状态:糟糕。运行应用时出错。


如果在查看应用时出现"😦 糟糕"提示,首先检查云日志中是否有具体错误信息。如果云日志中没有错误,很可能是在处理资源问题。


开发者视图

如果您以开发者账号登录一个超出资源限制的应用,可以从应用右下角点击"管理应用"来重启应用并清空内存。此时"管理应用"按钮会显示为红色并带有警告图标(错误状态)。

开发者视图:糟糕,您的应用运行出错


应用休眠机制

所有连续12小时无访问流量的应用将进入休眠状态。Community Cloud通过休眠应用来节省资源,实现平台资源的最佳共享利用。如需保持应用活跃,只需访问您的应用即可。

当有人访问处于休眠状态的应用时,会看到如下休眠页面:

应用状态:Zzzz。该应用因无活动已进入休眠状态。


点击"是的,立即唤醒这个应用!"即可重新激活应用。任何有权限查看该应用的用户(不仅限于开发者)都可以执行此操作!

您可以在工作区查看哪些应用处于休眠状态。休眠应用的右侧会显示月亮图标(就寝时间标记)。

应用状态:Zzzz。该应用因无活动已进入休眠状态


上一节:部署您的应用
下一节:应用分析


应用分析

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-app/app-analytics

Streamlit Community Cloud 允许您查看每个应用的访问情况。具体来说,您可以查看:

  • 应用的总访问量(统计自2022年4月起)。
  • 最近的独立访客(最多显示最近20位访客)。
  • 每位独立访客上次访问的相对时间戳。

Streamlit Community Cloud 上的应用分析界面


访问应用分析数据

您可以通过以下方式获取应用的分析数据:

  • 从工作区访问
  • 从云端日志访问

从工作区访问应用分析

在 share.streamlit.io 的工作区中,点击应用旁边的溢出图标(more_vert),然后选择"分析"。

通过应用溢出菜单从工作区访问应用分析


从云端日志访问应用分析数据

在您的应用 <your-custom-subdomain>.streamlit.app 中,点击右下角的"管理应用"。

从应用中访问 Streamlit Community Cloud 日志


点击溢出菜单图标(more_vert)并选择"分析数据"。

从云端日志访问应用分析数据


应用查看者

对于公开应用,我们会匿名处理工作区外的所有查看者以保护其隐私,并以随机化名显示匿名查看者。您仍可查看工作区内其他成员的身份信息,包括您已邀请的查看者(在他们接受邀请后)。


重要提示

当你邀请查看者访问应用时,他们也将获得分析数据的权限。此外,如果有人被邀请作为你工作区中任何应用的查看者,他们可以看到工作区内所有公开应用的分析数据,并且可以自行邀请其他查看者。工作区内的查看者可能通过分析功能看到开发者及其他查看者的邮箱地址。

对于你控制访问权限的私有应用,你可以查看最近访问过应用的具体用户。

有时,你可能会在私有应用中看到匿名用户。请放心,这些匿名用户确实拥有由你或工作区成员授权的查看权限。

用户显示为匿名的常见原因包括:

  • 该应用之前是公开的。
  • 该查看者在2022年4月访问过应用,当时Streamlit团队正在完善此功能的用户识别机制。

参阅Streamlit的隐私声明。


上一页:管理你的应用
下一页:应用设置


应用设置

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-app/app-settings

本页面介绍 Streamlit Community Cloud 上的应用设置功能。通过应用设置,您可以执行以下操作:查看或更改应用URL、管理应用的公开或私有访问权限、以及更新已保存的应用密钥。

若通过运行中应用右上角的应用框架进入"设置",您可以使用实时控制应用外观的功能。


访问应用设置

您可以通过以下方式进入应用设置:

  • 从工作区访问
  • 从云端日志访问

从工作区访问应用设置

在 share.streamlit.io 的工作区中,点击应用旁边的溢出图标(more_vert),然后选择"设置"。

从工作区访问应用设置


从云端日志访问应用设置

在您的应用 <your-custom-subdomain>.streamlit.app 中,点击右下角的"管理应用"。

从应用访问 Streamlit Community Cloud 日志


点击溢出菜单图标 (more_vert) 并选择"设置"。

从云端日志访问应用设置


更改应用设置


查看或修改应用URL

要通过仪表盘查看或自定义您的应用子域名,请按以下步骤操作:

  1. 按照上文所述方式进入应用设置界面。
  2. 在"应用设置"对话框的"常规"选项卡中,"应用URL"字段会显示您应用的唯一子域名。

Streamlit Community Cloud上的常规应用设置:自定义子域名


  1. (可选)输入一个6至63个字符长度的新自定义子域名,然后点击"保存"。

为应用设置新自定义子域名


如果自定义子域名不可用(例如已被占用或包含受限词汇),系统会显示错误提示。请根据提示修改子域名。

无效的应用自定义子域名


更新应用的分享设置

了解如何分享你的应用。

Streamlit Community Cloud 上的分享设置


查看或更新密钥

1、按照上述方法访问您的应用设置。

2、在“应用设置”对话框的“密钥”选项卡中,查看“密钥”字段中列出的应用密钥。

Streamlit Community Cloud 上的密钥应用设置


3、可选:添加、编辑或删除密钥,然后点击“保存”。

了解更多关于社区云应用的密钥管理。


上一页:应用分析
下一页:删除应用


删除您的应用

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-app/delete-your-app

如需删除应用,操作简单快捷。以下情况可能需要删除应用:

  • 已完成示例应用的测试
  • 需要从私有仓库部署但已有私有应用
  • 需要为应用更改Python版本
  • 需要重命名仓库或移动入口文件

删除应用后若需立即重新部署,自定义子域名可即刻复用。更多数据删除信息请参阅Streamlit信任与安全。

删除方式:

  • 通过工作区删除
  • 通过云日志删除

从工作区删除应用

1、在 share.streamlit.io 的工作区中,点击应用旁边的溢出图标(more_vert),然后点击"删除"。

从工作区删除应用


2、系统会显示确认提示。输入要求的确认字符串,然后点击"删除"。

确认从 Streamlit Community Cloud 删除应用


从云端日志中删除你的应用

1、在你的应用页面 <your-custom-subdomain>.streamlit.app 上,点击右下角的 “管理应用”。

从你的应用访问 Streamlit Community Cloud 日志


2、点击溢出菜单图标 (more_vert),然后点击 “删除应用”。

从云端日志中删除你的应用


3、系统会显示确认提示。输入要求的确认字符串,然后点击 “删除”。

确认从 Streamlit Community Cloud 中删除你的应用


上一页:应用设置
下一页:编辑你的应用


编辑你的应用

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-app/edit-your-app

你可以从任意选择的开发环境中编辑应用。Streamlit Community Cloud会监控你的代码仓库,自动同步所有提交的文件变更。对于大多数修改(比如应用Python文件的编辑),提交内容会立即反映到已部署的应用中。

Community Cloud还简化了开发环境的配置流程。只需简单点击几下,就能通过GitHub Codespaces配置开发环境。


使用 GitHub Codespaces 编辑你的应用

只需几分钟,即可为已部署的应用启动一个基于云的开发环境。你可以在 codespace 中运行应用,在安全的沙盒环境中尽情实验。完成代码编辑后,可以将更改提交到代码库,或暂时保留在 codespace 中以便后续继续处理。


为已部署应用创建代码空间

  1. 在 share.streamlit.io 的工作区中,点击应用旁边的溢出图标(more_vert),选择"使用 Codespaces 编辑"。

通过 GitHub Codespaces 编辑应用


Community Cloud 会在仓库中添加 .devcontainer/devcontainer.json 文件。若仓库已存在同名文件,则不会修改。如需接收 Community Cloud 创建的实例,请删除或重命名现有的 devcontainer 配置。


  1. 等待 GitHub 设置代码空间

完整初始化代码空间可能需要数分钟。当 Visual Studio Code 编辑器出现在代码空间后,安装 Python 和启动 Streamlit 服务器还需额外时间。完成后将显示分屏视图:左侧为代码编辑器,右侧为运行中的应用。编辑器默认会打开两个标签页:仓库的 readme 文件和应用入口文件。

新建的 GitHub Codespace


  1. 可选操作:在新标签页打开应用预览以获得更大工作空间

若使用多显示器且需要更多空间,可将应用预览在浏览器标签页中打开(而非使用 Visual Studio Code 的内置简易浏览器)。只需将简易浏览器中的 URL 复制到新标签页,然后关闭简易浏览器即可。后续步骤仍以 Visual Studio Code 的分屏视图为例。

  1. 修改应用代码

在代码空间中对应用的修改会自动保存。这些编辑不会影响仓库或已部署应用,除非执行提交操作(后续步骤会说明)。右侧显示的应用预览仅限当前代码空间本地可见。

  1. 首次编辑后,当系统提示时点击"始终重新运行",即可在右侧自动查看更新效果

选择"始终重新运行"以自动查看编辑效果


也可选择点击"重新运行"以避免编码时不必要的重复运行。由于代码持续自动保存,当编写中途暂停时,自动重新运行可能会报错。无论选择哪种模式,都可通过应用界面调整设置:点击预览界面右上角的溢出图标(more_vert),选择"设置",然后切换"保存时运行"选项。

  1. 继续编辑应用。代码空间会持续自动保存文件,应用重新运行时预览界面将同步更新。

可选操作:发布你的更改

完成对应用的编辑后,你可以选择将更改提交到代码仓库,从而立即更新已部署的应用。如果只想将更改保留在代码空间中以便后续继续编辑,请跳转至停止或删除代码空间。

  1. 在左侧导航栏中,点击源代码管理图标。

点击源代码管理图标


  1. 在左侧的源代码管理侧边栏中,为本次提交输入一个名称。
  2. 点击 “提交”。

查看你部署的Streamlit应用


  1. 要暂存并提交所有更改,在确认对话框中点击 “”。你的更改将在代码空间中本地提交。
  2. 要将提交推送到GitHub,在左侧的源代码管理侧边栏中点击 “**1 **”。
  3. 要将提交推送到 “origin/main”,在确认对话框中点击 “确定”。

你的更改现已保存到GitHub仓库。Community Cloud会立即在已部署的应用中反映这些更改。
7. 可选操作:要查看更新后的已发布应用,请返回share.streamlit.io工作区的 “我的应用” 部分,并点击你的应用。


停止或删除你的代码空间

当你停止与代码空间交互时,GitHub 通常会为你自动停止代码空间。但最保险的方式是在完成工作后手动停止或删除代码空间,以避免不必要的资源占用。

1、访问 github.com/codespaces。页面底部会列出你所有的代码空间。点击目标代码空间右侧的溢出菜单图标(more_horiz)。

停止或删除 GitHub 代码空间


2、若需稍后继续工作,点击"停止代码空间";若不再需要,则点击"删除"。

停止 GitHub 代码空间


3、恭喜!你已成功将应用部署至 Community Cloud。🎉 返回 share.streamlit.io/ 工作区,继续部署其他 Streamlit 应用。

查看已部署的 Streamlit 应用


上一页:删除应用
下一页:收藏应用


收藏你的应用

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-app/favorite-your-app

Streamlit Community Cloud 提供"收藏"功能,让你能快速从工作区访问常用应用。被收藏的应用会显示在工作区顶部,并带有黄色星标 (star)。作为开发者或被邀请的查看者,你可以在任何有权限的工作区中收藏或取消收藏应用。

Streamlit Community Cloud中被收藏的应用会置顶显示


注意:

收藏功能仅与您的账户相关。工作区的其他成员无法查看您收藏了哪些应用。


收藏与取消收藏你的应用

你可以通过以下方式收藏你的应用:

  • 从工作区收藏
  • 从应用工具栏收藏

在工作区收藏你的应用

1、在 share.streamlit.io 的工作区中,将鼠标悬停于你的应用上。
如果应用尚未被收藏,悬停时会显示空心星标 (star_border)。

2、点击应用名称旁的星标 (star_border/star) 即可切换收藏状态。


从应用工具栏收藏你的应用

在你的应用 <your-custom-subdomain>.streamlit.app 中,点击右上角的星标图标 (star_border/star) 即可切换应用的收藏状态。

直接从在线应用中收藏你的应用


上一页:编辑你的应用
下一页:重启你的应用


重启你的应用

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-app/reboot-your-app

当你需要清除应用内存,或者修改了Streamlit Community Cloud未监控的文件后强制重新构建时,可能需要重启应用。这会中断当前正在使用应用的所有用户,并且重新部署可能需要几分钟时间。在重启期间,访问者会看到"您的应用正在准备中"的提示。

在Community Cloud上重启应用非常简单!你可以通过以下方式重启:

  • 从工作区重启
  • 通过云日志重启

从工作区重启应用

1、在 share.streamlit.io 的工作区中,点击应用旁边的溢出图标(more_vert),然后选择"重启"。

从工作区重启应用


2、系统会显示确认提示,点击"重启"即可。

在Streamlit Community Cloud中确认重启应用


从云端日志重启你的应用

1、在你的应用页面 <your-custom-subdomain>.streamlit.app 上,点击右下角的"管理应用"。

从应用访问Streamlit Community Cloud日志


2、点击溢出菜单图标(more_vert),然后选择"重启应用"。

从云端日志重启你的应用


3、系统会显示确认提示。点击"重启"。

在Streamlit Community Cloud中确认重启应用


上一页:收藏你的应用
下一页:在GitHub中重命名你的应用


重命名或更改应用的 GitHub 坐标

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-app/rename-your-app

Streamlit Community Cloud 通过 GitHub 坐标(所有者、代码库、分支、入口文件路径)来识别应用。如果您未经准备就移动或重命名其中任一坐标,将失去对关联应用的管理权限。


删除、重命名与重新部署

如需对已部署应用的 GitHub 坐标进行修改(例如重命名代码库、移动入口文件位置等),请按以下步骤操作:

  1. 删除当前应用
  2. 在 GitHub 中进行所需更改
  3. 重新部署应用

当您已更改应用的GitHub坐标时重新获取访问权限

如果您修改了仓库配置,导致Community Cloud无法在GitHub上找到您的应用,该应用将会消失或仅显示为"只读"状态。只读状态意味着您无法编辑、重启、删除应用或查看其设置,仅能访问分析数据。

您可以通过以下步骤尝试恢复控制权:

  1. 撤销对应用的修改,使Community Cloud能够识别预期的所有者、仓库、分支及入口文件。
  2. 登出Community Cloud和GitHub账户。
  3. 重新登录Community Cloud和GitHub。
  4. 若访问权限恢复,请删除当前应用。随后执行您原本计划的修改,并重新部署应用。

若上述操作未能恢复访问权限,请联系Snowflake技术支持。他们可以协助删除已断连的应用,以便您重新部署。为获得最快响应,请提供所有受影响应用的完整URL列表。


上一页:重启您的应用
下一页:升级Python


在Community Cloud上升级应用的Python版本

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-app/upgrade-python

Python的依赖项可以通过简单地更改环境配置文件(通常是requirements.txt)进行原地升级。但Python本身在部署后无法更改。

部署应用时,您可以通过"高级设置"对话框选择Python版本。应用部署后,如需更改Python版本,必须删除应用并重新部署。

1、记录应用的当前设置:
* 当前使用的自定义子域名
* GitHub坐标(代码库、分支和入口文件路径)
* 密钥(删除应用后,其自定义子域名会立即释放可供重用)

2、删除您的应用

3、重新部署应用
1、在部署页面选择应用的GitHub坐标
2、设置与已删除实例相同的自定义域名
3、点击"高级设置"
4、选择所需的Python版本
5、可选:如果应用原有密钥,请重新输入
6、点击"保存"
7、点击"部署"

几分钟后,Community Cloud会将您重定向到重新部署的应用。


上一篇:在GitHub中重命名应用
下一篇:升级Streamlit


在 Streamlit Community Cloud 上升级应用的 Streamlit 版本

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-app/upgrade-streamlit

想要使用 Streamlit 的新特性,但你在 Streamlit Community Cloud 上的应用还在运行旧版本的 Streamlit 库?别担心!根据你管理应用依赖的方式,以下是升级应用 Streamlit 版本的方法:


无依赖文件

当您的代码仓库中没有依赖文件时,您的应用将使用上次重启时存在的最新Streamlit版本。这种情况下,只需重启您的应用,Community Cloud就会安装最新版本。

如果您的应用依赖于特定版本的Streamlit,您可能需要避免陷入这种情况。这就是为什么我们建议您使用依赖文件并固定所需的Streamlit版本。


使用依赖文件

当您的应用包含依赖文件时,请按以下方式重启应用或修改依赖文件:

  • 如果依赖文件中未包含Streamlit,请按照上述方式重启应用。

请注意,我们不建议使用不完整的依赖文件,因为pip在解析依赖项兼容版本时将无法包含streamlit

  • 如果依赖文件中包含Streamlit但未固定版本(如未指定版本号或版本上限),请按照上述方式重启应用。

当Community Cloud重启您的应用时,它会重新解析依赖文件。您的应用将获得与依赖文件兼容的所有依赖项的最新版本。

  • 如果依赖文件中包含Streamlit且版本已固定(例如streamlit==1.37.0),请更新您的依赖文件。

当您向代码库提交依赖文件变更时,Community Cloud会自动检测变更并解析新的依赖关系。这是您添加、删除或更改所有Python依赖项的通用方法。您无需手动重启应用,但也可以选择这样做。


上一页:升级Python
下一页:分享您的应用


分享你的应用

https://docs.streamlit.io/deploy/streamlit-community-cloud/share-your-app

现在你的应用已经部署完成,可以轻松地分享它并与他人协作。不过首先,让我们花点时间跳个快乐舞庆祝应用成功部署!🕺💃

你的应用现在有一个固定URL,可以随意分享给任何人。应用的权限会继承自GitHub仓库——如果仓库是私有的,应用也会是私有的;如果仓库是公开的,应用也会是公开的。如需修改权限,直接在应用设置菜单中操作即可。

你一次只能拥有一个私有应用。如果从私有仓库部署了应用,必须将该应用转为公开或删除后,才能从其他私有仓库部署新应用。只有开发者可以在公开和私有状态之间切换应用权限。

  • 将应用设为公开或私有
  • 分享公开应用
  • 分享私有应用

设置应用为公开或私有

如果你从公共代码仓库部署了应用,默认情况下该应用将是公开的。如果你从私有代码仓库部署了应用,想要自由地与整个社区共享,就需要手动将应用设为公开。


从应用设置中配置隐私权限

1、进入应用设置,导航至"分享"版块。

Streamlit Community Cloud 上的分享设置


2、在"谁可以查看此应用"下方设置应用隐私权限:

  • 选择"此应用为公开且可被搜索"将使应用公开可见
  • 选择"仅指定人员可查看此应用"将使应用转为私有状态

在分享设置中配置应用隐私


通过分享按钮设置隐私权限

1、在您的应用 <your-custom-subdomain>.streamlit.app 中,点击右上角的 “分享” 按钮。

从您的应用中访问分享按钮


2、通过点击 “将此应用设为公开” 来切换应用的公开或私有状态。

通过分享按钮切换应用的公开/私有状态


分享你的公开应用

当你的应用设为公开后,只需将应用URL分享给他人,他们就能立即查看!Streamlit Community Cloud 提供了多种便捷的分享方式。


在社交媒体上分享你的应用

1、在你的应用页面 <your-custom-subdomain>.streamlit.app 中,点击右上角的 “分享” 按钮。

2、点击 “社交” 即可使用便捷的社交媒体分享按钮。

通过分享按钮获取社交媒体分享链接


小贴士:使用这些社交媒体分享按钮将你的应用发布到我们的论坛吧!我们很期待看到你的作品,说不定还会把你的应用选为当月的明星应用哦。💖


通过邮件邀请查看者

无论您的应用是公开还是私有,都可以直接从 Streamlit Community Cloud 发送邮件邀请。这将授予查看者访问您所有公开应用分析数据的权限,并允许他们邀请其他用户加入您的工作区。开发者和受邀查看者在分析数据中会通过其邮箱标识,而不会显示为匿名(前提是他们登录后查看了您的应用)。了解更多关于查看者的信息,请参阅应用分析。

1、在您的应用页面 <your-custom-subdomain>.streamlit.app 上,点击右上角的 “分享” 按钮。

2、输入邮箱地址并点击 “邀请”。

通过分享按钮邀请查看者


3、受邀用户将在收件箱中收到直接访问您应用的链接。

发送给查看者的邀请邮件


复制你的应用 URL

在你的应用中,点击右上角的"分享"按钮,然后点击"复制链接"。

从分享按钮复制你的应用 URL


为你的 GitHub 仓库添加徽章

为了让其他人更容易发现并使用你的 Streamlit 应用,你可以在仓库中添加 Streamlit 的 GitHub 徽章。下方是放大后的徽章示例,点击该徽章将跳转到(本例中)Streamlit 的 Roadmap 页面。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

当你部署应用后,只需在 GitHub 的 README.md 文件中添加以下 Markdown 代码,即可嵌入这个徽章:

[![Streamlit App](https://static.streamlit.io/badges/streamlit_badge_black_white.svg)](https://<your-custom-subdomain>.streamlit.app)

注意:

请确保将 https://<your-custom-subdomain>.streamlit.app 替换为您已部署应用的 URL!


分享你的私有应用

默认情况下,从私有代码仓库部署的应用仅对工作区内的开发者可见。私有应用不会对其他任何人显示,除非你明确授予他们权限。你可以通过以下方式授予权限:在GitHub上将他们添加为开发者,或在Streamlit Community Cloud上将他们添加为查看者。

当你将某人的电子邮件地址添加到应用的查看者列表后,该用户即可登录并查看你的私有应用。如果他们的邮箱关联了Google账号,则可以通过Google OAuth登录;否则,他们将收到一次性电子邮件链接用于登录。每次邀请新用户时,Streamlit都会发送一封包含应用链接的邀请邮件。


重要提示

当您向工作区中的任何应用添加查看者时,他们将获得该应用的分析数据访问权限,以及您所有公开应用的分析数据。这些查看者还可以通过邀请更多查看者将权限传递给其他人。工作区中的所有查看者和开发者都会通过其电子邮件在分析数据中被识别。此外,他们的电子邮件会显示在工作区中每个应用的分析数据中,而不仅仅是他们被明确邀请的应用。了解更多关于查看者的信息,请参阅应用分析。


通过分享按钮邀请查看者

1、在您的应用 <your-custom-subdomain>.streamlit.app 中,点击右上角的 “分享” 按钮。

从应用中访问分享按钮


2、输入要发送邀请的邮箱地址,然后点击 “邀请”。

通过分享按钮邀请查看者


3、被邀请的用户会显示在下方列表中。

通过分享按钮查看已邀请用户


4、被邀请的用户将在收件箱中收到应用的直接访问链接。

发送给查看者的邀请邮件


  • 如需移除查看者,只需按上述方式打开分享菜单,点击其姓名旁的 关闭 按钮即可。

通过分享按钮移除查看者


从应用设置邀请查看者

1、进入您的应用设置,找到"共享"部分。

从应用设置访问共享选项


2、在查看者列表中添加或移除用户。点击"保存"。

通过应用设置邀请和移除查看者


上一页:管理您的应用
下一页:嵌入您的应用


嵌入你的应用

https://docs.streamlit.io/deploy/streamlit-community-cloud/share-your-app/embed-your-app

通过将交互式、数据驱动的应用程序直接集成到页面中,嵌入 Streamlit Community Cloud 应用可以丰富你的内容。无论你是在撰写博客文章、技术文档,还是在 Medium、Notion 甚至 StackOverflow 等平台上分享资源,嵌入 Streamlit 应用都能为你的内容增添动态元素。这让你的受众能够与你的想法互动,而不仅仅是阅读相关内容或查看静态截图。

Streamlit Community Cloud 支持通过 iframe 和 oEmbed 两种方式嵌入公开应用。这种灵活性使你能够在各种平台上分享应用,扩大应用的可见度和影响力。本指南将介绍如何有效使用这两种方法,向全世界分享你的 Streamlit 应用。


通过 iframe 嵌入应用

Streamlit Community Cloud 支持使用子域名方案嵌入公开应用。要嵌入公开应用,只需在 *.streamlit.app 网址末尾添加查询参数 /?embed=true

例如,假设你想嵌入 30DaysOfStreamlit 应用。那么 iframe 中应使用的网址是:https://30days.streamlit.app/?embed=true

<iframesrc="https://30days.streamlit.app?embed=true"style="height: 450px; width: 100%;"
></iframe>

全屏模式 open_in_new


重要提示

官方将不提供对私有应用嵌入的支持。

除了允许通过 iframe 嵌入应用外,?embed=true 查询参数还会实现以下功能:

  • 移除包含应用菜单图标(more_vert)的工具栏
  • 清除应用顶部和底部的内边距
  • 移除页脚
  • 去除应用顶部的彩色线条

如需精细控制嵌入行为,Streamlit 支持通过一个或多个 ?embed_options 查询参数实例进行配置(例如显示工具栏、以暗黑主题打开应用等)。点击此处查看完整的嵌入选项列表。


通过 oEmbed 实现嵌入

Streamlit 的 oEmbed 支持提供了更简单的嵌入体验。你可以直接将 Streamlit 应用的 URL 放入 Medium、Ghost 或 Notion 页面(或任何支持 oEmbed 或 embed.ly 的 700 多个内容提供商)。嵌入的应用会自动显示!这有助于 Streamlit Community Cloud 应用无缝集成到这些平台中,提升应用的可见性和可访问性。


示例

在Notion页面、Medium文章或Ghost博客中创建内容时,只需粘贴应用的URL并按下"Enter"键,应用就会自动在该位置渲染显示。你可以直接使用未修饰的应用URL,无需添加?embed=true查询参数。

https://30days.streamlit.app/


以下是@chrieke开发的Prettymapp应用嵌入Medium文章的示例:

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传


提示:请确保托管嵌入式Streamlit应用的平台支持oEmbed或embed.ly。


oEmbed 支持的关键站点

oEmbed 应能开箱即用地支持以下平台(包括但不限于):

  • Medium
  • Notion
  • Looker
  • Tableau
  • Ghost
  • Discourse
  • StackOverflow
  • W3
  • Reddit

请查阅具体平台的文档以确认其对 oEmbed 的支持情况。


iframe 与 oEmbed 对比

这两种方法唯一值得注意的区别在于,使用 iframe 可以通过下一节描述的各种 ?embed_options 参数来自定义应用的嵌入行为(例如显示工具栏、以深色主题打开应用等)。


嵌入选项

当使用 iframe 嵌入应用时,Streamlit 允许通过 ?embed_options 查询参数来精细控制嵌入行为,该参数可以指定一个或多个配置项。

需要注意的是,无论是 ?embed 还是 ?embed_options 参数,都不会出现在 st.query_params 及其前身 st.experimental_get_query_paramsst.experimental_set_query_params 中。这意味着你无法获取或修改这些参数的值。

以下是 ?embed_options 支持的配置项:

  1. 在应用右上角显示工具栏,包含应用菜单(more_vert)、运行状态图标和 GitHub 链接。

/?embed=true&embed_options=show_toolbar

  1. 在应用顶部和底部显示内边距。

/?embed=true&embed_options=show_padding

  1. 显示页脚标注 “Made with Streamlit”。(此选项不适用于 Streamlit 1.29.0 及更高版本,因为该版本移除了页脚功能)

/?embed=true&embed_options=show_footer

  1. 在应用顶部显示彩色线条。

/?embed=true&embed_options=show_colored_line

  1. 隐藏应用加载时显示的骨架屏。

/?embed=true&embed_options=hide_loading_screen

  1. 禁用应用主体区域的滚动。(侧边栏仍可滚动)

/?embed=true&embed_options=disable_scrolling

  1. 以浅色主题打开应用。

/?embed=true&embed_options=light_theme

  1. 以深色主题打开应用。

/?embed=true&embed_options=dark_theme

这些参数还可以组合使用:

/?embed=true&embed_options=show_toolbar&embed_options=show_padding&embed_options=show_footer&embed_options=show_colored_line&embed_options=disable_scrolling

构建嵌入链接

您可以直接在应用中便捷地生成应用的嵌入链接!

1、在您的应用页面 <your-custom-subdomain>.streamlit.app 上,点击右上角的"分享"按钮。

2、点击"嵌入"选项,查看可选的嵌入方式列表。

通过分享按钮访问嵌入选项


3、选择所需的嵌入配置后,点击"获取嵌入链接"将链接复制到剪贴板。

通过分享按钮为应用生成定制化嵌入链接


上一篇:分享您的应用
下一篇:搜索可索引性


SEO 与搜索索引优化

https://docs.streamlit.io/deploy/streamlit-community-cloud/share-your-app/indexability

当你将公开应用部署到 Streamlit Community Cloud 时,它会每周自动被 Google 和 Bing 等搜索引擎索引。🎈 这意味着任何人都可以通过搜索其自定义子域名(例如 “traingenerator.streamlit.app”)或搜索应用标题来找到你的应用。


最大化应用可索引性

以下建议可帮助您充分发挥应用的可索引性:

1、确保应用设为公开

2、尽早选择自定义子域名

3、选择描述性应用标题

4、自定义应用的元描述


确保你的应用是公开的

所有托管在 Community Cloud 上的公开应用都会被搜索引擎索引。如果你的应用是私有的,它将不会被搜索引擎收录。要将私有应用转为公开,请参阅分享你的应用。


尽早选择自定义子域名

如果您未主动选择子域名,Community Cloud 会为您的应用自动生成一个。不过,您可以随时更改子域名!自定义子域名能调整应用URL,以体现应用内容、个人品牌或任何您想要的标识。要了解如何更改应用的子域名,请参阅查看或更改应用的URL。

通过选择自定义子域名,您可以方便他人找到您的应用。例如,如果您部署的是一个生成训练数据的应用,可以选择类似traingenerator.streamlit.app的子域名。这样当人们搜索"training generator"或"train generator streamlit app"时,就能轻松找到您的应用。

我们建议在部署应用时就选择自定义子域名。这能确保搜索引擎使用您的自定义子域名而非自动生成的子域名来索引应用。如果后续才选择自定义子域名,您的应用可能会被多次索引——既使用默认子域名,又使用自定义子域名。这种情况下,旧URL会导致404错误,可能让搜索您应用的用户感到困惑。


选择描述性应用标题

应用的元标题是显示在搜索引擎结果中的文本,也是应用打开时浏览器标签页显示的文本。默认情况下,应用的元标题与应用标题相同。但您可以通过设置 st.set_page_config 参数 page_title 为自定义字符串来定制应用的元标题。例如:

st.set_page_config(page_title="Traingenerator")

这将把您应用的元标题更改为"Traingenerator"。这样当人们搜索"Traingenerator"或"train generator streamlit app"时,能更容易找到您的应用:

Google搜索"train generator streamlit app"的结果


自定义应用的元描述

元描述是出现在搜索引擎结果中的简短描述。搜索引擎利用元描述来帮助用户理解您的应用内容。

根据我们的观察,搜索引擎似乎更倾向于使用 st.headerst.text 中的内容,而非 st.title。如果您在应用顶部通过 st.headerst.text 添加描述,搜索引擎很可能会将其用作元描述。


我的应用在索引中是什么样子?

如果你好奇自己的应用在搜索引擎结果中会如何显示,可以在Google搜索中输入以下内容:

site:<your-custom-subdomain>.streamlit.app

示例:site:traingenerator.streamlit.app


Google 搜索 "site:traingenerator.streamlit.app" 的结果


如果我不想让我的应用被索引怎么办?

如果您不希望应用被搜索引擎索引,可以将其设为私有。阅读分享您的应用了解如何将应用设为私有。注意:每个工作区只能有一个私有应用。如果您想将当前应用设为私有,必须先删除工作区内的其他私有应用或将其转为公开。

需要说明的是,Community Cloud 是一个开放且免费的社区平台,供用户部署、发现和共享 Streamlit 应用及代码。因此,我们建议您将应用设为公开状态,这样它才能被搜索引擎索引,并被其他 Streamlit 用户和社区成员发现。


上一页:嵌入您的应用
下一页:分享预览


分享预览功能

https://docs.streamlit.io/deploy/streamlit-community-cloud/share-your-app/share-previews

当您在社交媒体上分享链接时,平台会自动生成包含标题、预览图和描述信息的卡片。这一功能被称为"分享预览"。同理,当您分享公开Streamlit应用的链接时,系统也会生成相应的分享预览。下图展示了在Twitter上发布的公开Streamlit应用分享预览示例:

公开Streamlit应用的分享预览


注意:

共享预览仅针对部署在 Streamlit Community Cloud 上的公开应用生成。


标题

标题是分享预览顶部显示的文本,当用户访问应用时也会出现在浏览器标签页上。您应该将标题设置为对应用受众有意义并能描述应用功能的文字。最佳实践是保持标题简洁,理想情况下不超过60个字符。

有两种方式可以设置分享预览的标题:

1、在 st.set_page_config() 中设置 page_title 参数为您想要的标题。例如:

import streamlit as stst.set_page_config(page_title="My App")# ... rest of your app

2、如果不设置 page_title 参数,分享预览的标题将默认使用应用 GitHub 仓库的名称。例如,托管在 github.com/jrieke/traingenerator 的应用默认标题会显示为 “traingenerator”。


描述信息

描述是指在分享预览中标题下方显示的文本。描述应简要概括应用的功能,理想情况下不超过100个字符。

Streamlit会从应用GitHub仓库的README文件中提取描述内容。如果README不存在,描述将默认显示为:

此应用由Streamlit构建!快来体验并访问https://streamlit.io发现更多精彩的社区应用。🎈


默认缺失描述时的分享预览


若希望您的分享预览效果出色,并促使用户分享应用或点击链接,建议在GitHub仓库的README文件中编写优质的描述内容。


预览图片

Streamlit Community Cloud 每天会为您的应用截取一次屏幕截图,并将其用作预览图像。这与直接从应用代码或 GitHub 仓库提取的标题和描述不同。该截图可能需要长达 24 小时才会更新。


将应用从公开切换为私有

如果您最初将应用设为公开,之后又决定将其设为私有,我们将停止为该应用生成分享预览。但分享预览可能需要长达24小时才会完全停止显示。


上一页:搜索可索引性
下一页:管理您的账户


管理您的账户

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-account

您可以通过工作区设置来更新邮箱或彻底删除账户。

您的Streamlit Community Cloud账户通过邮箱进行识别。无论使用哪种登录方式,当您登录Community Cloud时,都需要提供邮箱地址。特别是通过GitHub登录时,系统会使用您GitHub账户的主邮箱。您可以在工作区设置的"关联账户"部分查看邮箱身份和版本控制身份信息。


访问您的工作区设置

1、登录 share.streamlit.io。

2、在左上角点击您的工作区名称。

3、在下拉菜单中点击"设置"。

从您的工作区访问工作区设置


上一页:分享您的应用
下一页:登录与登出


登录与登出

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-account/sign-in-sign-out

创建账户后,您可以通过以下方式登录 share.streamlit.io。

登录 Streamlit Community Cloud


使用 Google 登录

1、点击“继续登录”。

2、点击“使用 Google 继续”。

3、输入您的 Google 账户凭据并按照提示操作。

如果您的账户已关联 GitHub,系统可能会立即提示您使用 GitHub 登录。


通过 GitHub 登录

  1. 点击"继续登录"
  2. 点击"使用 GitHub 继续"
  3. 输入您的 GitHub 凭据并按照提示操作

重要提示

当你使用 GitHub 登录时,Community Cloud 会查找与你的 GitHub 账户使用相同邮箱的账户。如果该账户不存在,Community Cloud 会查找使用你的 GitHub 账户进行源代码管理的账户。在后一种情况下,Community Cloud 会将你的 Community Cloud 账户邮箱更新为与 GitHub 账户邮箱一致。


通过邮箱登录

1、点击"继续登录"。

2、在"邮箱"字段中输入您的邮箱地址。

3、点击"继续"。(如遇提示,请完成人机验证)

4、前往您的邮箱收件箱,复制六位数的一次性验证码。该验证码有效期为十分钟。

5、返回认证页面,输入验证码。(如遇提示,请完成人机验证)

如果您的账户已关联GitHub,系统可能会直接提示您通过GitHub登录。


退出您的账户

从您的工作区中,点击左上角的工作区名称。然后点击"退出登录"。

退出Streamlit Community Cloud登录


上一页:管理您的账户
下一页:工作区设置


工作区设置

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-account/workspace-settings

通过工作区设置,您可以管理账户、查看应用资源与限制,并获取支持资源。


访问您的工作区设置

  1. 登录 share.streamlit.io
  2. 在左上角点击您的工作区名称
  3. 在下拉菜单中点击"设置"

从您的工作区访问设置


关联账户

"关联账户"部分会显示您当前的邮箱身份和源代码控制账户。了解更多信息,请参阅管理您的账户。

在工作区设置中管理关联账户


限制

"限制"部分显示您当前的资源和限制。要了解更多信息,请参阅应用资源和限制。

工作区设置中显示的资源配置限制


支持

"支持"部分提供了一系列实用资源的便捷列表,方便您快速找到所需的帮助渠道。

通过工作区设置获取支持选项


上一页:登录与登出
下一页:管理GitHub连接


管理你的 GitHub 连接

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-account/manage-your-github-connection

如果你已创建账户但尚未连接 GitHub,请参阅连接你的 GitHub 账户。

如果你已连接 GitHub 账户但仍需允许 Streamlit Community Cloud 访问私有仓库,请参阅可选:添加私有仓库访问权限。


为组织添加访问权限

如果您属于某个组织,在连接 GitHub 账户时可以为该组织授予或申请访问权限。更多信息请参阅组织访问权限。

如果您的 GitHub 账户已连接,可以通过 GitHub 设置移除权限,这样下次登录 Community Cloud 时 Streamlit 会重新请求 GitHub 授权。


撤销并重新授权

1、在您的工作区中,点击右上角的工作区名称。要退出 Community Cloud,请点击"退出登录"。

退出 Streamlit Community Cloud


2、前往您的 GitHub 应用设置页面 github.com/settings/applications。

3、找到"Streamlit"应用,点击三个点图标(more_horiz)打开溢出菜单。

如果您曾使用 GitHub 登录过 Community Cloud,您还会在 GitHub 账户中看到"Streamlit Community Cloud"应用。"Streamlit"应用用于管理仓库访问权限,而"Streamlit Community Cloud"应用仅用于管理您在 Community Cloud 上的身份信息(电子邮件)。您只需撤销"Streamlit"应用的访问权限。

4、点击"撤销"。

撤销 Streamlit 访问您 GitHub 账户的权限


5、点击"我了解,撤销访问权限"。

确认撤销 Streamlit 对您 GitHub 账户的访问权限


1、返回 share.streamlit.io 并登录。系统将提示您授权 GitHub,具体操作请参考连接 GitHub。


授予先前被拒绝的访问权限

如果组织所有者限制了Streamlit的访问权限或禁用了所有OAuth应用程序,他们可能需要直接在GitHub中修改权限设置。当组织限制了Streamlit的访问时,在通过GitHub账号授权过程中,该组织名称旁会显示一个红色X标记(关闭状态)。

Streamlit访问GitHub账号授权被拒绝


参阅GitHub官方文档了解OAuth应用程序与组织相关内容。


重命名您的 GitHub 账户或代码库

Community Cloud 通过 GitHub 坐标(所有者、代码库、分支、入口文件路径)来识别应用。如果您重命名了已部署应用的账户或代码库,将失去对该应用的管理权限。了解更多信息,请参阅在 GitHub 中重命名您的应用。


上一页:工作区设置
下一页:更新您的邮箱


更新您的邮箱

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-account/update-your-email

要在 Streamlit Community Cloud 上更新邮箱,您有两种选择:可以创建一个新账户并将现有账户合并至其中,或者使用 GitHub 账户来更新邮箱。


选项一:创建新账号并合并

两个 Community Cloud 账号不能使用同一个 GitHub 账号进行源代码管理。当你将 GitHub 账号连接到新的 Community Cloud 账号用于源代码管理时,Community Cloud 会自动合并任何使用相同源代码控制的现有账号。

因此,你可以通过以下步骤创建新账号并合并:

  1. 使用新邮箱创建新账号
  2. 连接你的 GitHub 账号

这样你的新旧账号就会自动合并,从而实现了邮箱地址的变更。


选项二:使用您的GitHub账户

您也可以选择更改GitHub账户的邮箱,然后通过GitHub登录Community Cloud。

  1. 前往GitHub,将您的主邮箱地址设置为新邮箱。
  2. 如果当前已登录Community Cloud,请先退出登录。
  3. 重新登录Community Cloud使用GitHub

如果系统将您重定向至工作区并显示现有应用,则表示操作成功!您的邮箱已更新。要确认当前邮箱和GitHub账户,请点击左上角的工作区名称,在下拉菜单底部查看相关信息。

如果被重定向至空白工作区且左上角显示"工作区警告",请按照关联GitHub账户指引操作。这种情况通常发生在您曾用新邮箱创建过账户但未关联GitHub账户时。


重要提示

如果您拥有多个 GitHub 账户,请务必谨慎操作。为避免出现意外行为,建议您为每个 GitHub 账户使用不同的电子邮件地址,或者避免通过 GitHub 登录 Community Cloud。


上一页:管理 GitHub 连接
下一页:删除账户


删除您的账户

https://docs.streamlit.io/deploy/streamlit-community-cloud/manage-your-account/delete-your-account

删除您的Streamlit Community Cloud账户和创建它一样简单。当您删除账户时,您的信息、账户以及所有托管的应用都将被一并删除。更多关于数据删除的信息,请参阅Streamlit信任与安全。


警告

删除您的账户是永久性操作,且无法撤销。在继续之前,请确保您确实希望删除账户及所有托管的应用。您部署的任何应用都将被删除,无论它们是从哪个工作区部署的。


如何删除您的账户

请按照以下步骤删除您的账户:

1、登录 share.streamlit.io 上的 Streamlit Community Cloud,并进入您的工作区设置。

从工作区设置中删除您的 Streamlit Community Cloud 账户


2、在"关联账户"部分,点击"删除账户"。

3、在确认对话框中,按照提示点击"永久删除账户"。

您的所有信息和应用将被永久删除。

您的 Streamlit Community Cloud 账户已被删除


就是这么简单!如果您在删除账户时遇到任何问题或有疑问,请在我们的论坛联系我们。我们很乐意提供帮助!🎈


上一页:更新您的邮箱
下一页:状态与限制


社区云的状态与限制

https://docs.streamlit.io/deploy/streamlit-community-cloud/status


社区云状态

您可以在 streamlitstatus.com 查看社区云的当前状态。


GitHub OAuth 授权范围

为了部署您的应用,Streamlit 需要访问您在 GitHub 上的应用源代码,并管理关联代码库的公钥。默认的 GitHub OAuth 授权范围足以操作公开代码库中的应用。但若要访问您的私有代码库,我们会创建一个只读的 GitHub 部署密钥,然后通过 SSH 密钥访问您的仓库。创建该密钥时,GitHub 会向仓库管理员发送通知作为安全措施。

Streamlit 需要 GitHub 提供额外的 repo OAuth 授权范围来操作您的私有仓库并管理部署密钥。我们深知 repo 范围赋予了 Streamlit 超出实际需求的权限——作为重视安全性的团队,我们甚至不愿获得这些权限。这是社区云创建时 GitHub 提供的权限模型。目前我们正在采用新的 GitHub 权限模型,以减少不必要的权限授予。


开发者权限

由于上述提到的 OAuth 限制,开发者必须拥有对代码库的管理员权限才能从中部署应用。


仓库文件结构

您可以从仓库部署多个应用,且入口文件可以位于目录结构中的任意位置。但 Community Cloud 始终从仓库根目录初始化所有应用,即使入口文件位于子目录中。这会带来以下影响:

  • Community Cloud 仅识别仓库根目录(每个分支下)唯一的 .streamlit/configuration.toml 文件
  • 必须声明相对于仓库根目录的图像、视频和音频文件路径。例如:
    • st.image
    • st.logo
    • st.set_page_config 中的 page_icon 参数
      这些命令都要求文件路径相对于工作目录(即执行 streamlit run 的位置)

Linux 环境

Community Cloud 基于 Debian Linux 构建。

  • Community Cloud 使用 Debian 11(代号 “bullseye”)。要浏览可安装的软件包列表,请参阅软件包列表。
  • 所有文件路径必须使用正斜杠作为路径分隔符。

Python 环境

  • 单个应用不能混用多个 Python 包管理器。Community Cloud 会根据检测到的第一个环境配置文件来配置应用的 Python 环境。更多信息请参阅 其他 Python 包管理器。
  • 建议使用最新版本的 Streamlit 以确保 Community Cloud 功能完整。在规划环境时,请务必注意 Streamlit 的 当前依赖要求 以确保包兼容性,特别是 protobuf>=3.20,<6
  • 如果固定使用 streamlit< 1.20.0,则必须同时固定 altair<5。早期版本的 Streamlit 未能正确限制 Altair 的版本。Community Cloud 上运行的补救脚本会在检测到较新版本时强制安装 altair<5,这可能导致 Altair 的依赖项被意外升级,从而违反您的环境配置。新版本的 Streamlit 已支持 Altair 5。
  • Community Cloud 仅支持仍接收安全更新的 Python 正式发布版本。不能使用已终止支持、预发布或功能测试版本的 Python。更多信息请参阅 Python 版本状态。

配置

以下配置选项在 Community Cloud 中设置,将覆盖 config.toml 文件中的任何冲突设置:

[client]
showErrorDetails = false[runner]
fastReruns = true[server]
runOnSave = true
enableXsrfProtection = true[browser]
gatherUsageStats = true

IP 地址

如需为连接设置 IP 白名单,Community Cloud 当前的服务 IP 地址如下:


警告

这些IP地址可能随时变更,恕不另行通知。

35.230.127.15035.203.151.10134.19.100.13434.83.176.21735.230.58.21135.203.187.16535.185.209.5534.127.88.7434.127.0.12135.230.78.19235.247.110.6735.197.92.11134.168.247.15935.230.56.3034.127.33.10135.227.190.8735.199.156.9734.82.135.155


其他限制

  • 当您向云端日志打印内容时,可能需要先执行sys.stdout.flush()才会显示。
  • 社区云将所有应用托管在美国境内,目前无法更改此设置。
  • 社区云对来自GitHub的应用更新实施速率限制,每分钟不超过五次。

上一页:管理您的账户
下一页:Snowflake


2025-07-19(六)

http://www.lryc.cn/news/593444.html

相关文章:

  • Python绘制数据(三)
  • Matplotlib 30分钟精通
  • 人该怎样活着呢?55
  • Windows11下编译好的opencv4.8-mingw,可下载后直接用
  • Apache Kafka 学习笔记
  • 详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
  • Python高级数据类型:字典(Dictionary)
  • Datawhale 7月学习
  • RK3568 Linux驱动学习——SDK安装编译
  • Oracle为什么需要临时表?——让数据处理更灵活
  • DAY 18 推断聚类后簇的类型
  • 【Project】kafka+flume+davinci广告点击实时分析系统
  • MySQL(145)如何升级MySQL版本?
  • 在服务器(ECS)部署 MySQL 操作流程
  • 基于单片机宠物喂食器/智能宠物窝/智能饲养
  • 手撕Spring底层系列之:注解驱动的魔力与实现内幕
  • Spring AI 1.0版本 + 千问大模型之 文本记忆对话
  • 基于单片机病床呼叫系统/床位呼叫系统
  • C#操作WPS表格
  • 大模型军备竞赛升级!Grok 4 携 “多智能体内生化” 破局,重构 AI 算力与 Agent 2.0 时代
  • 张 关于大语言模型(LLM)置信度研究的经典与前沿论文 :温度缩放;语义熵;自一致性;事实与反思;检索增强;黑盒引导;
  • [MySQL基础3] 数据控制语言DCL和MySQL中的常用函数
  • 一个基于阿里云的C端Java服务的整体项目架构
  • 阿里云ssl证书自动安装及续订(acme)
  • NX二次开发常用函数——从一个坐标系到另一个坐标系的转换(UF_MTX4_csys_to_csys )相同体坐标转化
  • LRU算法及优化
  • SpringBoot五分钟快速入门指南
  • Java行为型模式---访问者模式
  • Nestjs框架: 理解 RxJS响应式编程的核心概念与实践
  • 如何构建未来的人-AI-环境智能教育生态系统