PyScript将Python引入浏览器比以往任何时候都更容易

94 阅读3分钟

PyScript将Python引入浏览器,比以往任何时候都更容易

Anaconda的一个新项目在网页中提供了Python运行时间,通过一个JS包含,并可访问许多流行的Python包。

用于科学计算的Python发行版的制造商Anaconda在2022年美国PyCon大会上宣布了 PyScript项目--一种在浏览器中的单一内含方式,可以在HTML页面中运行Python脚本,就像JavaScript本身一样简单。

传统上,Python只能通过作为返回HTML和JavaScript的应用服务器运行来与JavaScript或网页互动。PyScript没有服务器组件;一切都直接在浏览器中运行。

使用PyScript,来自Python和JavaScript世界的有用组件可以并排部署。在一个例子中,纽约市的出租车数据演示,PyScript使用Pandas来分析数据,然后通过JavaScript的WebGL来生成数据的交互式3D视图。

一个PyScript演示(纽约市出租车活动的实时渲染),使用Pandas进行数字计算,并使用JavaScript可视化库提供数据的互动视图。

PyScript使用CPython运行时的完整移植到WebAssembly来运行在线Python代码。你把你的Python代码放在<py-script> 标签里面,你可以把它的输出放在一个选定的<div> 。一个<py-repl> 标签插入一个REPL块,允许你输入和执行代码,而一个<py-env> 标签的功能就像资源库中的requirements.txt文件,列出需要的软件包。

PyScript运行时还可以启用许多常见的Python包,如与Anaconda-NumPy、Pandas、Scikit-learn等捆绑的科学库。PyScript 仓库中的演示展示了各种方法来实现这一点。

虽然PyScript仍处于早期阶段,但它已经为Python和JavaScript提供了互操作的能力,例如,Python可以引用DOM,或者JavaScript对象可以处理Python对象。PyScript还实现了Python发行版中所需要的许多行为的浏览器内等价物,例如列出脚本的包要求。

这方面的早期项目,如Pyodide(PyScript将其作为自己工作的基础),缺乏PyScript在JavaScript和Python之间的平滑整合,以及对软件包的广泛访问。PyScript可以通过PyPI访问所有可用的软件包,常用的Pandas和NumPy已经可用。

然而,第三方软件包如果是纯Python的话,效果最好。PyScript还没有为软件包自动构建平台二进制文件的机制,尽管这在理论上是可能的。另一个障碍是下载和设置一个特定的支持PyScript的网页所需的所有组件所需的时间和带宽。核心的Python运行时间是大约3.4MB的WebAssembly,尽管它在第一次加载后被缓存了。

Anaconda对PyScript的目标,正如在社区留言板上所描述的那样,是使其成为解决长期存在的Python应用程序打包和部署问题的一个可能的解决方案。长期以来,将一个Python脚本,尤其是有许多依赖关系的脚本,捆绑起来让别人在没有Python运行时的情况下按原样使用是很困难的。