提问人:Benji 提问时间:1/29/2022 更新时间:11/18/2022 访问量:1827
有没有办法使用像 react 这样的前端框架在浏览器客户端运行 Python 脚本?
Is there a way to run Python scripts client side in the browser using a front end framework like react?
问:
介绍
在我看来,有很多很酷和有用的 python 脚本/程序,它们并没有发挥它们的潜力。因为所有这些都是在命令行中本地执行的,所以它们不是很用户友好,普通人也不太容易访问。我想创建一个可以在其上运行此类脚本的网站,但是从具有易于导航的 UI 的浏览器中,这样用户就不必下载文件即可使用该服务。
我的方法
尽管我已经花了很多时间学习 js,但我仍然是一个初学者,但我似乎不知道我如何能够做到这一点。 我想我可能必须设置一个可以在后端运行并将信息提供给前端的 API。但是,我要运行的特定脚本/文件称为 spleeter,它接收音频文件,并将它们拆分为词干。我确信可以通过 API 上传文件,但是我可以看到它变得非常繁重的服务器端,特别是如果很多人同时访问该网站。我非常天真地认为,这个本质上的可伸缩性问题可以通过在本地客户端运行脚本来解决,这样用户就不必上传任何东西,一石二鸟,从某种意义上说,我不必支付托管上传文件的服务器成本,也不必支付运行脚本的计算能力。 在搜索了这个话题一个星期后,我知道这确实是我非常幼稚的。我研究过一个叫做 Brython 的东西和一个叫做 Transcrypt 的东西,但不太明白它如何适用。
基本上是问题
所有这些解释基本上都提出了以下问题,我想做的事情是否可能?这种设置是否有一个我没有正确搜索的名称?如果可能的话,有人可以把我推向正确的方向吗?
我希望有一个解决方案,如果没有,我真的认为任何人都会把这个结合在一起。
答:
我自己还没有使用过这个工具,但 Brython 拥有这个功能。我将研究自己使用它,因为这是我一直期待使用的东西。
我个人是 Transcrypt 的粉丝,我自己也用它来创建完整的 React 应用程序,这些应用程序是用 Python 而不是 JavaScript 编程的。但就像任何 React 应用程序一样,这确实需要将代码预编译为 JavaScript,然后才能在 Web 浏览器中运行。也就是说,多亏了 sourcemaps,您仍然可以在浏览器中对 Python 代码进行故障排除。
如果要在浏览器中从源代码实际运行 Python 代码,可能需要以下选项之一:
- Brython(为您提供 Python 脚本标签,在加载时编译为 JS)
- Skulpt(提供基于 JS 的 Python 解释器)
- pyodide(在浏览器中运行的基于 WASM 的 Python 解释器)
除此之外,还有一些框架类型的项目,如 Dash 和 IDOM,可让您使用 Python 创建浏览器应用程序。
最后,还有 Anvil,它为您提供了使用 Python 开发 Web 应用程序的 VB 风格体验。
鉴于上述所有选项,听起来 Skulpt 可能是您可能想要进一步研究的东西。
现在可以直接在浏览器中运行 python 代码,而无需除 Web 浏览器以外的任何开发环境。向 PyScript
问好。
根据目前的官方文档:
请注意,PyScript 非常 alpha 并且处于低迷状态 发展。从可用性到加载,存在许多已知问题 时代,你应该期待事情经常变化。我们鼓励 人们用 PyScript 玩耍和探索,但目前我们没有 建议将其用于生产。
这是直接在浏览器中打印和使用的演示。Hello World
live date time
pyscript
<link rel="stylesheet" href="https://pyscript.net/latest/pyscript.css" />
<script defer src="https://pyscript.net/latest/pyscript.js"></script>
<py-script>
from datetime import datetime
print('Hello world!')
now = datetime.now()
now.strftime("%m/%d/%Y, %H:%M:%S")
</py-script>
评论