Python没有服务器如何部署运行Shiny应用程序

news/2024/11/18 23:30:17/文章来源:https://www.cnblogs.com/tecdat/p/18198887

原文链接:https://tecdat.cn/?p=36205

原文出处:拓端数据部落公众号

随着Web技术的快速发展,越来越多的数据科学家和开发人员倾向于使用Web应用程序进行数据分析和可视化。Shiny for Python作为一种流行的Web应用程序框架,为Python开发人员提供了便捷的数据展示和交互工具。然而,在实际应用中,由于硬件资源或成本限制,有时无法直接使用服务器进行部署。本文旨在探讨在无服务器环境下,如何有效地部署和运行Shiny for Python应用程序。

Shiny for Python(或简称为Shiny)是一个用于构建Web应用程序的R包,但它也支持Python环境。通过Shiny,我们的分析师可以快速地帮助客户构建出具有交互性和动态性的数据可视化应用。然而,在部署这些应用时,通常需要服务器环境来托管和运行。但在某些情况下,如个人项目或小型团队项目,可能无法直接获取到服务器资源。因此,研究无服务器环境下的Shiny for Python应用部署方法具有重要意义。

Shiny for Python的Shinylive简介

那么,Shinylive到底是什么?它是一个实验性功能,允许您的Shiny for Python应用程序在Web浏览器中运行。这意味着您不需要为运行Python而单独设置服务器。

通过Shinylive,Python和Shiny在Web浏览器中运行,这代表了应用程序的客户端和服务器。

这得益于两项技术:

  • WebAssembly——这是一种编译程序的二进制格式,它可以在Web浏览器中以接近原生的速度运行。
  • Pyodide——一个将Python和许多包编译成WebAssembly的端口。

使用Shinylive部署的主要优势在于计算是在客户端完成的。在许多情况下,这对于作为Shiny开发者的您来说是有益的,因为客户端浏览器通常比服务器拥有更强大的计算能力。当您将应用程序扩展到数十或数百个并发用户时,这一点尤为重要。

另一方面,您也可以将其视为一个缺点。例如,有时您需要进行需要大量计算且需要强大服务器的任务。在这种情况下,将计算转移到客户端并不是最佳方案。

下面我们将探讨一些额外的优势和劣势。

使用Shinylive的优势

以下是使用Shinylive部署带来的一些明确且无需多言的优势:

  • 无需安装: 您无需在计算机上安装Python或Shiny。
  • 超易分享: 通过生成可分享的URL来分享您的应用程序。
  • 简单部署: 您可以使用Shinylive将应用程序部署到任何静态网页托管服务(文章末尾将详细介绍)。
  • 可扩展性: 应用程序本质上只是静态文件,因此很容易进行扩展。
  • 无懈可击的安全性: 应用程序不在服务器上运行,因此几乎消除了所有安全风险。

使用Shinylive的劣势

每项优势都有其劣势,Shinylive也不例外。让我们来看看其中的一些:

  • Python包限制: 不是所有的Python包都在Pyodide上可用。
  • 下载大小: 通过Python和Pyodide运行Shiny应用程序所需的包大约需要13MB的数据。其他包也有相应的大小(Numpy = 7.5MB, Pandas = 13MB, Matplotlib = 11.5MB)。请注意,这些数据将被缓存,因此只有首次运行时会比较慢。
  • 无秘密可言: 应用程序的数据和代码被发送到浏览器,这意味着用户可以轻松地检查它们。

如何使用Shinylive编辑器分享Shiny for Python应用

本节将指导您如何使用和分享通过Shinylive编辑器创建的Shiny for Python应用。

编写Shiny for Python应用程序

首先,我们需要一个应用程序。它基本上绘制了一个从正态分布中抽取的值的直方图。用户可以更改箱数(bin count),图表将自动更新。

您可以将此代码粘贴到Shinylive编辑器中。只需替换已存在的代码并点击运行按钮。

接下来,在右侧您将看到:

图1 – Shiny for Python编辑器(1)

正如之前所承诺的,您可以通过侧边栏中的滑块来更改条形的数量:

图2 – Shiny for Python编辑器(2)

这就是我们的应用程序。虽然它并不复杂,但足以满足本文后续部分的需求。

分享Shiny for Python应用程序

您是否注意到Shinylive编辑器右上角有一个“分享”按钮?如果没有,下面就是它的样子:

图3 – 创建可分享链接

点击它将会打开一个模态窗口,类似于以下这个:

图4 – 编辑器和应用URL

这就是所有神奇发生的地方。您可以分享编辑器URL,这意味着用户将能够访问代码并修改它,或者您可以分享应用URL,这意味着用户将只能看到渲染后的应用程序。

当您分享应用URL时,我们建议您勾选“隐藏头部”复选框,以便不显示给用户蓝色的Shiny for Python标题。

您可以复制这两个URL中的任何一个,并在新的浏览器窗口中打开它们。对于应用URL,您将看到以下界面:

图5 – 已分享的Shiny for Python应用程序

image.png

请注意,这些URL只在一个方面有所不同——第一个URL包含/editor/部分,而第二个URL包含/app/部分。您可能已经猜到了它们各自指向的页面。

接下来,让我们探索如何使用Shinylive和GitHub部署Shiny for Python应用程序的选项。

如何使用Shinylive和GitHub分享Shiny for Python应用程序

答案很简单——GitHub Gists。接下来,我们将引导您完成创建Gist并在Shinylive中使用的过程。

创建GitHub Gist

如果您有GitHub账户,可以点击右上角的加号按钮来创建一个新的Gist。创建完成后,您的Gist看起来应该是这样的:

image.png

图6 – Shiny for Python应用的GitHub gist

我们唯一做的更改是将直方图的条形颜色从gray改为了red。这不是一个必要的更改,但将证明GitHub gist的连接实际上是在工作的。

通过GitHub Gist分享Shiny for Python应用

查看gist的URL。您只需要ID部分,即用户名之后的部分:

image.png

图7 – GitHub gist URL

您可以复制这个ID部分,并将其粘贴到以下URL的末尾:

 
 
复制代码https://shinylive.io/py/app/#gist=

现在,您可以打开这个URL来验证连接是否工作正常。

image.png

图8 – 分享的Shiny for Python应用(2)

我们现在有了一个带有红色直方图条的Shiny for Python应用。

在任何地方部署Shiny for Python应用

Shinylive还允许您将Shiny for Python应用部署到静态网页托管服务。此功能目前处于实验阶段,因此细节可能会在未来发生变化。

此部署选项本质上将允许您将您的应用托管在Netlify或GitHub Pages等服务上。还有一个Posit Connect选项,但这些服务需要一整篇文章来详细介绍。

配置Shinylive

第一步是安装shinylive Python包。

安装完成后,您可以使用Shinylive提供的工具来准备和打包您的应用以供部署。这通常涉及到创建一个包含所有应用文件(包括Python代码、数据文件和任何静态资源)的文件夹,并使用Shinylive的命令行工具来生成一个静态网站。

然后,您可以将这个静态网站部署到任何支持静态文件的Web服务器上,如Netlify、GitHub Pages或您自己的服务器。

这是您将看到的输出:

image.png 图9 – 安装Shinylive Python包

安装完成后,您可以使用shiny create命令创建一个新的Shiny for Python应用程序。我们将我们的应用程序命名为histogram_app

您应该看到以下输出:

image.png 图10 – 创建Shiny for Python应用

最后,您现在可以使用shinylive导出Shiny for Python应用程序:

这将创建一个新的site目录,其中包含静态应用的内容:

image.png 图11 – 导出Shiny for Python应用以进行静态服务

现在我们已经导出了应用,接下来要做的就是通过Web服务器运行它。

本地应用服务

假设您导出的Shiny for Python应用存储在site文件夹中。

如果一切正常,您将看到一条消息,表明应用已在本地8008端口上运行:

image.png

图12 – 运行Shiny for Python应用

现在,您可以打开localhost:8008并在本地看到您的应用正在运行:

图13 – 本地运行的Shiny for Python应用

您可以通过打开本地Shinylive编辑器来进一步操作。只需访问

localhost:8008/edit

,您就会看到一个熟悉的窗口:

图14 – 本地Shinylive编辑器


Python Shiny的Shinylive总结

Shinylive让分享Python Shiny应用变得更加容易。您可以在线编辑器中完成所有操作,或者选择使用GitHub gist以获得更多控制权。此外,您还可以将应用本地运行或部署在任何静态网站托管服务上,例如GitHub页面。

667913740-1536x1536.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/708013.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

R语言CART决策树、随机森林、chaid树预测母婴电商平台用户寿命、流失可视化

全文链接:http://tecdat.cn/?p=31644 原文出处:拓端数据部落公众号 借着二胎政策的开放与家庭消费升级的东风,母婴市场迎来了生机盎然的春天,尤其是母婴电商行业,近年来发展迅猛。用户获取和流失是一对相对概念,就好比一个水池,有进口,也有出口。我们不能只关心进口的…

Python金融时间序列模型ARIMA 和GARCH 在股票市场预测应用|附代码数据

原文链接:http://tecdat.cn/?p=24407 最近我们被客户要求撰写关于金融时间序列模型的研究报告,包括一些图形和统计输出。 这篇文章讨论了自回归综合移动平均模型 (ARIMA) 和自回归条件异方差模型 (GARCH) 及其在股票市场预测中的应用 ( 点击文末“阅读原文”获取完整代码数…

R语言中绘图设置不输出绘图内容

001、正常绘图plot(1:10, cex = 2, pch = 19) 002、不输出绘图内容plot(1:10, cex = 2, pch = 19, type = "n") 。

AnimationClip获取关键帧信息

1,关键帧数据都保存在AnimationCurve上,所以首先要获取到这个public static AnimationCurve GetAnimCurve(AnimationClip clip, string path, string propName) {EditorCurveBinding[] bindings = AnimationUtility.GetCurveBindings(clip);foreach (var b in bindings){if (…

Dism壳 (做系统的启动盘 多系统版本install.wim合成 界面化)

做系统优盘的时候不断的dism来dism去有些烦了 做了个小工具可以代替bat了... 没做异常处理 开始预览镜像把素材拖进去开始制作流程点击空动作后会出现创建的动作类型 其中合成就是把多个系统搓在一起用的 上面的索引代表的正是双击看到的那些信息的索引 输入对应索引然后空格分…

项目管理之八大绩效域------笔记(三)

18.3 开发方法和生命周期绩效域跟开发方法,项目交付节奏和生命周期相关的活动和职能.一、预期目标:①开发方法与项目可交付物相符合;②将项目交付与干系人价值紧密关联;③项目生命周期由促进交付节奏的项目阶段和产生项目交付物所需的开发方法组成。(项目周期的设计符合项目的…

CSAPP第二章

gcc指定不同的C语言版本 注意寻址和字节顺序讲的, 对象的地址都是从小地址开始算起, 而所谓大端法就是高位字节在前; 小端法则是低位字节在前 注意: 等号上的小圆点的组合表示"被定义为"的意思 反码有+0和-0, -0就是全为1的位模式, 负数的反码就是对应正数所有位取反…

R语言中判断数值是否带有小数点

001、不为整数> a <- 5.324 > floor(a) == a ## 截断后不相等, 说明带有小数点部分,即不为整数 [1] FALSE 002、是整数> b <- 324 > floor(b) == b ## 截断小数点后仍然相等,说明是整数 [1] TRUE 。

poj 3061 Subsequence

题目链接: 来自罗勇军《算法竞赛》书中的习题。 题意:给长度为 \(N\) 的数组和一个整数 \(S\),求总和不小于 \(S\) 的连续子序列的最小长度。 方法一:尺取法 主要思想为:当 \(a_1, a_2 , a_3\) 满足和 \(\geqslant S\),得到一个区间长度 \(3\), 那么去掉开头 \(a_1\),剩…

汇编语言基础及编译原理(网安)

汇编语言基础及编译原理 二进制基础 程序的编译 汇编与链接从c语言到可执行程序 源代码.c 编译 汇编代码.s 汇编 目标文件.o 链接(静态库直接拷贝,动态库运行时通过动态链接方式加载) 可执行文件(p)x86机器指令入门 栈 一种先进后出的数据结构 被用于保存函数的局部(保存…

SkyWalking 单机安装 + 集成springboot

一、下载地址 https://skywalking.apache.org/downloads/ 需下载安装包:SkyWalking APM (v9.6.0) (新版本 Booster UI 已集成在 SkyWalking APM中)apache-skywalking-apm-9.6.0.tarJava Agent (v9.1.0)apache-skywalking-java-agent-9.1.0.tar二、安装 2.1、安装SkyWalking …

R语言中小数点如何实现进位

001、round,四舍五入> a <- 5.345 ## 舍去 > round(a) [1] 5 > b <- 5.824 ## 进位 > round(b) [1] 6 002、round,四舍五入指定小数位数> a <- 8.426532 > round(a, 1) ## 保留一位小数,四舍五入 [1] 8.4 > round…