为 Python 和 Shinylive 应用程序容器化 Shiny


Shiny for Python 为基于 Python 的数据和科学堆栈构建的 Web 应用程序带来了简单的交互性。容器化 Py-Shiny 应用程序是部署到各种托管选项(包括静态托管)的下一步。

Shiny 是一个框架,可以轻松构建交互式 Web 应用程序。Shiny 是 10 年前作为 R 包推出的。在他的 10 周年主题演讲中,Joe Cheng 在 2022 年 RStudio 大会上宣布了Shiny for Python。Python程序员现在可以尝试使用Shiny来创建交互式数据驱动的Web应用程序。Shiny是其他框架的替代品,如Dash或Streamlit。

为 Python 和 Shinylive 应用程序容器化 Shiny

⚠️

Shiny for Python 目前处于 Alpha 阶段。它可能不稳定,并且 API 可能会更改。我们很高兴听到您的反馈,但请不要将其用于生产应用程序!

与R Shiny应用程序类似,Shiny for Python可以使用RStudio Connect,Shiny Server Open Source和 Shinyapps.io 进行部署。托管数据应用网站专用的替代托管选项要求 Python Shiny 应用在容器内运行。在这篇文章中,我们将回顾如何使用Docker来容器化Shiny for Python应用程序。

闪亮的应用模板

我们遵循入门指南(另请参阅安装指南)。您可以安装闪亮的withor。在这里我们将使用。以下命令生成我们将使用的应用文件:pipcondapip

pip install shiny
shiny create app
shiny run --reload app/app.py

# INFO:     Will watch for changes in these directories: ['/Users/Username/app']
# INFO:     Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
# INFO:     Started reloader process [57404] using StatReload
# INFO:     Started server process [57406]
# INFO:     Waiting for application startup.
# INFO:     Application startup complete.

转到浏览器以尝试显示滑块和文本输出的应用程序,返回滑块输入值的双倍(当然):http://127.0.0.1:8000N=n

最简单的 Shiny for Python 示例。

最简单的 Shiny for Python 示例。

使用 Ctrl+C 退出应用。

包含绘图的示例应用

我们将使用带有绘图示例的应用程序。在文本编辑器中打开文件并将以下内容复制到其中:app/app.py

from shiny import App, render, ui
import numpy as np
import matplotlib.pyplot as plt

app_ui = ui.page_fluid(
    ui.h2("Histogram with Shiny for Python!"),
    ui.layout_sidebar(
        ui.panel_sidebar(
            ui.input_slider("n", "N", 0, 100, 20),
        ),
        ui.panel_main(
            ui.output_plot("plot"),
        ),
    ),
)


def server(input, output, session):
    @output
    @render.plot(alt="A histogram")
    def plot():
        np.random.seed(19680801)
        x = 100 + 15 * np.random.randn(437)
        plt.hist(x, input.n(), density=True)


app = App(app_ui, server, debug=True)

在与 相同的目录中创建文件,内容如下:app/requirements.txtapp.py

shiny>=0.2.7
numpy>=1.23.3
matplotlib>=3.6.0

现在用于安装剩余的软件包。然后再次加载应用程序并再次访问您的浏览器。pip install --no-cache-dir --upgrade -r app/requirements.txtshiny run --reload app/app.pyhttp://127.0.0.1:8000

您将看到新应用程序,其情节看起来与经典的Rhello Shiny应用程序非常相似:

闪亮的蟒蛇应用程序与情节。

闪亮的蟒蛇应用程序与情节。

The Dockerfile

如果您在启动应用程序后查看打印输出,您会注意到 Shiny 在引擎盖下使用Uvicorn。这是使用FastAPI 部署容器化应用的常用方法。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/python/292944.html

(0)
上一篇 2022年11月11日 15:14
下一篇 2022年11月11日 15:21

相关推荐

发表回复

登录后才能评论