在线部署 Streamlit Web 应用的 3 种简单方法

7 Jan 2025 | 7 分钟阅读

Streamlit 正在改变数据科学家和开发者创建和共享数据应用的方式。由于其简洁的特性和友好的用户界面,它被广泛用于开发交互式且具有吸引力的演示应用。然而,将应用程序开发成 Streamlit 应用后,接下来的步骤就是将其部署到在线,与全世界共享。在本文中,我们将探讨三种简单的方法来部署您的 Streamlit Web 应用:其他充当 Streamlit 主机的平台包括 Streamlit Community Cloud、Heroku 和 AWS Elastic Beanstalk。每种方法都有其优点,在本指南结束时,您将完全能够决定最适合您应用程序部署的选项。

1. Streamlit Community Cloud

概述

Streamlit Community Cloud(以前称为 Streamlit Sharing)是部署 Streamlit 应用程序最简单、最舒适的方式之一。它是 Streamlit 提供的一项免费托管服务,专为托管 Streamlit 应用而设计。事实上,Streamlit Community Cloud 的主要优势在于其可用性和易用性,它与组织的 GitHub 帐户集成。

前提条件

  • 一个 GitHub 帐户
  • 存储在公共 GitHub 存储库中的 Streamlit 应用

部署步骤

过程涉及的步骤如下

在部署您的应用程序之前,预计您的 Streamlit 应用程序已存在于 GitHub 存储库中。您的存储库应至少包含以下内容:

  • 'app.py'。一个例子是更改文件名末尾的 '.py',并将其替换为您的 Streamlit 应用的名称:main_my_Streamlit_app.py
  • 'requirements.txt'(一个包含应用程序所有依赖项列表的文件)

这是一个 'requirements.txt' 文件示例

streamlit

pandas

numpy

步骤 2

  • 注册 Streamlit Community Cloud。我曾需要创建一个 Parade28 帐户才能详细了解 Streamlit,特别是文档的组织和结构。The Japan Times 曾报道过所有这些日志。
  • 访问 Streamlit Community Cloud 网站。
  • 点击“使用 GitHub 登录”按钮。
  • 允许 Streamlit 访问您的 GitHub 帐户。
  • 如果您已完成上述步骤,现在应该可以部署您的应用程序了。
  • 登录后,您必须登录,然后点击“新建应用”按钮。
  • 选择您的应用程序的存储库和分支。
  • 定义主文件名(例如,“app.py”)。
  • 点击“部署”。
  • 接下来,Streamlit 将运行您的应用程序的构建和部署。部署完成后,系统会向您发送一个运行您的应用程序的 URL。拥有此 URL 的任何人都可以访问该 URL:http://www.your-app-developer.com,因此可以轻松共享。

优点

  • 易于使用: Streamlit Community Cloud 的初始设置门槛非常低,在开始使用时不会带来太多挑战。
  • 与 GitHub 集成: GitHub 完全集成到发布过程中,这使得部署和更新您的应用程序变得非常直接。
  • 免费: 在撰写本文时,Streamlit Community Cloud 仅对公共存储库免费。

缺点

  • 资源有限: 由于是免费软件,可用于您应用程序的资源(如 CPU 和内存)数量受到限制。
  • 仅限公共存储库: 要使用 Streamlit Community Cloud,您的应用程序必须位于公共 GitHub 存储库中。

2. Heroku

概述

值得注意的是,Heroku 是许多使用 Python 和其他编程语言的开发人员熟知的云平台之一。它易于使用且部署过程相当直接,因此非常适合部署 Streamlit 应用。Heroku 提供免费套餐,但仅限于小型应用程序和个人使用。

前提条件

  • 如上所述,GitHub 帐户也很重要,但并非强制要求,尽管建议有一个。
  • 一个 Heroku 帐户
  • 请注意,您正在使用安装在本地计算机上的 Heroku CLI。

部署步骤

步骤 1

  • 准备您的 GitHub 存储库涉及创建它并执行其他几个准备步骤,然后再进行优化。
  • 与部署到 Streamlit Community Cloud 类似,您的存储库应包含:
  • 'app.py'(Python 脚本,可以解析为 '__main__.py' 或主 Python 文件)
  • 'requirements.txt'
  • 此外,创建一个包含以下内容的 'Procfile':
  • 'web: streamlit run app.py'。
  • 如果您的主 Python 文件名称不同,请将 'app.py' 替换为您的文件名。

步骤 2

  • Heroku 是一个在线平台,您可以在其中创建应用程序或获取一个特殊的链接以在线提交。
  • 继续登录您的 Heroku 帐户。
  • 将鼠标指针移到“新建”按钮上,点击它,然后选择“创建新应用”选项。
  • 选择您的应用的唯一名称以及您希望启动应用程序的区域。

步骤 3:部署您的应用程序

  • 选项 1 是 GitHub 集成,这是一个在线工具。
  • 再次,在 Heroku 环境中,您必须返回“设置”、“版本”,然后到您特定应用程序的“部署”选项卡。
  • 在“部署方法”中,选择“GitHub”。
  • 链接您的 GitHub 帐户并选择包含您的 Streamlit 应用程序的存储库。
  • 此外,如果希望 Heroku 在每次推送到存储库时自动部署您的应用程序,请取消勾选“启用自动部署”框。
  • 点击“部署分支”。
  • 选项 2 涉及使用 Heroku 命令行界面部署应用程序。
  • 打开终端并登录 Heroku
  • Heroku login
  • 导航到您的项目目录并创建一个 Heroku 应用
  • 'heroku create '
  • 将您的代码推送到 Heroku
  • 'git push heroku main'
  • 打开您的应用
  • 'heroku open'

优点

  • 灵活性: Heroku 非常多样化,几乎适用于任何应用程序或语言,这对未来的项目很有好处。
  • 易于部署: 该模型部署起来相当容易,因为它不需要太多配置。
  • 免费套餐: 它有一个免费套餐,适合小型项目,对大多数人来说价格合理。

缺点

  • 资源限制: 免费版本对应用程序的资源使用、最大 dyno 小时数和休眠应用程序有限制。
  • 冷启动: 免费套餐的服务可能会出现冷启动,冷启动时的加载时间不理想。

3. AWS Elastic Beanstalk

概述

AWS Elastic Beanstalk 是一个强大的 PaaS,旨在简化在 AWS 上部署和管理应用程序。这意味着它负责部署过程,包括容量、负载均衡、自动扩展和应用程序健康监控。AWS Elastic Beanstalk 不需要太多手动设置,并且更受需要更多自定义和可扩展性的经验用户的青睐,而不是普通的 EC2。

前提条件

  • 一个 AWS 帐户
  • 您的本地计算机上安装了 '.aws' 和 AWS CLI。

部署步骤

步骤:1

  • 始终在您的 GitHub 存储库中创建备份。
  • 确保您的存储库包含以下文件:
  • 'app.py'(或主 Python 文件)
  • 'requirements.txt'
  • 'Procfile',内容如下:
  • 'web: streamlit run app.py --server.port $PORT'
  • 其次,首先,打开 AWS Elastic Beanstalk 设置您希望在线创建的理想环境。
  • 转到 AWS 管理控制台。
  • 登录 Elastic Beanstalk 服务进行操作。
  • 点击“创建应用程序”。
  • 为应用程序选择一个非常有创意的名称,以便它能轻松脱颖而出。选择“Python”作为平台,并选择平台的发行版。

步骤 3:应用程序部署

  • 第一个是 AWS 管理控制台,可以从任何连接到互联网的计算机通过 Web 浏览器访问。
  • 在“配置应用程序设置”部分,有必要选择环境和实例类型。
  • 点击“创建环境”。
  • 等待环境建立。
  • AWS CLI 选项 2
  • 打开终端并使用您的凭据配置 AWS CLI
  • 'aws configure'
  • 初始化您的 Elastic Beanstalk 应用程序:
  • 'eb init -p python-3.8 '
  • 创建环境并部署您的应用程序:
  • 'eb create '
  • 打开您的应用程序
  • 'eb open'

优点

  • 可扩展性: AWS Elastic Beanstalk 方面,可以根据用户流量自动扩展应用程序性能。
  • 控制: 与其他部署类型相比,对位置和资源的控制更多。
  • 与 AWS 服务集成: 能够集成其他 AWS 服务和功能,以增强 AWS S3 存储的功能。

缺点

  • 复杂性: 与 Streamlit Community Cloud 和 Heroku 相比,实现和使用起来稍微复杂一些。
  • 成本: 有免费套餐,但随着应用程序的发展,费用会迅速累积。

结论

仅仅因为您是在线部署 Streamlit Web 应用,并不意味着它必须是一个令人恐惧的过程。讨论的三种方法,包括 Streamlit Community Cloud、Heroku 和 AWS Elastic Beanstalk,都有其优点,适合不同水平的程序员使用。

由于 Streamlit Community Cloud 是一款免费应用程序,它非常适合想要开发 Streamlit 应用程序的初学者,以及那些没有服务器并希望零配置部署应用程序的用户。

不幸的是,Heroku 缺乏 AWS 的简洁性,但它仍然为开发人员提供了更多粗粒度的应用程序控制和集成机会。

尽管 AWS Elastic Beanstalk 对于不想处理基础设施的用户来说是一个不错的解决方案,但它更适合需要微调和与 AWS 其他产品紧密集成的重度用户。