您是主要使用 Python 的数据科学家或开发者吗?您是否羡慕那些编写 Javascript 代码并在浏览器中构建精美网站的开发者?如果我们能用 Python 编写网站,那该有多好?令人惊叹的是,在 2022 年美国 PyCon 大会上,Anaconda 的 CEO Peter Wang 宣布了一项名为 PyScript 的闪亮新技术,它允许用户在浏览器中编写 Python,实际上还可以编写许多其他语言。
什么是 PyScript?
PyScript 由包括 Peter Wang、Fabio Pliger 和 Philipp Rudiger 在内的 Anaconda 团队开发,正如 Peter 在他的演讲中提到的,“它是一个在 HTML 中交织 Python 的系统(类似于 PHP)。” 这意味着您可以在 HTML 中编写和运行 Python 代码,在 PyScript 中调用 Javascript 库,并用 Python 完成所有 Web 开发。听起来很棒!
对于世界和数据科学家来说,使用 PyScript 意味着什么?
- 最显而易见的是,借助 PyScript,我们现在可以在 HTML 中编写 Python(以及其他可能的语言)并构建 Web 应用程序。PyScript 使 Python 的强大功能能够被更广泛的前端开发者和创作者所使用。
- 正如 Peter 在演讲中提到的,“Web 浏览器是世界上最普及、最便携的计算机环境。” 确实,几乎每个人都可以访问 Web 浏览器,无论是在电脑上还是在手机上。这意味着任何人都可以访问并开始编程,而没有任何基础设施障碍。
- 有了 PyScript,我们不再需要担心部署。PyScript 提供了“超越云端的架构转变”。一切都将在您的 Web 浏览器中发生。作为数据科学家,我们可以将我们的仪表板和模型在 HTML 文件中共享,每当其他人在 Web 浏览器中打开该文件时,代码就会运行。

图 1. PyScript 概述。
PyScript 背后的魔力是什么?
PyScript 目前构建于 Pyodide 之上,Pyodide 是 “CPython 到 WebAssembly/Emscripten 的端口”。 PyScript 支持在浏览器中编写和运行 Python 代码,未来还将提供对其他语言的支持。

图 2. PyScript 技术栈。
什么是 WebAssembly?
使使用 Python 编写网站成为可能的基础技术是 WebAssembly。当 WebAssembly 最初被开发时,Web 浏览器仅支持 Javascript。
WebAssembly 于 2017 年首次发布,到 2019 年迅速成为万维网联盟 (W3C) 的官方标准。它包括人类可读的 .wat 文本格式语言,然后将其转换为浏览器可以运行的二进制 .wasm 格式。这使我们能够用任何语言编写代码,将其编译为 WebAssembly,然后在 Web 浏览器中运行。
如何使用 PyScript
PyScript 的 alpha 版本可以在 pyscript.net 上找到。代码可在 https://github.com/pyscript 获取。按照这些说明尝试一下。PyScript 允许您使用以下三个主要组件在 HTML 中编写 Python
- py-env 定义了运行 Python 代码所需的 Python 包。
- py-script 是您编写 Python 代码的地方,这些代码将在网页中执行。
- py-repl 创建一个 REPL(读取-求值-打印循环)组件,该组件评估用户输入的代码并显示结果。
py-env 示例
这是一个关于如何在 HTML 中使用 py-env 定义 Python 环境的示例。在此示例中,我们将 bokeh、numpy、pandas 和 scikit-learn 包加载到我们的环境中。

py-script 示例
此示例演示了一个带有流数据的 Panel 仪表板。正如您在代码中看到的,我们能够在 py-script 中编写我们熟悉的 Python 代码,就像我们通常在 Python 文件中所做的那样。如果您不喜欢直接在 py-script 下编写 Python 代码,您也可以使用 Python 文件作为源代码,如下所示:


来源:https://github.com/pyscript/pyscript/blob/main/pyscriptjs/examples/panel_stream.html
py-repl 示例
此示例演示了一个使用 DeckGL 和 REPL 组件的、带有 NYC Taxi 数据的 Panel 仪表板。正如您所看到的,我们能够在 REPL 中定义半径并选择数据帧的子集 (hour<3)。多么神奇!

来源:https://github.com/pyscript/pyscript/blob/main/pyscriptjs/examples/panel_deckgl.html
您还可以在 PyScript Github 页面上找到许多其他示例,包括 D3 可视化和带有计算机视觉的 Mario 游戏。
PyScript 的未来
PyScript 将 Python 带入浏览器。我对这项新创新感到非常兴奋,并且迫不及待地想看看它如何在社区中发展。敬请期待即将推出的许多精彩新功能!
参考文献
https://github.com/anaconda/pyscript
主题演讲,Peter Wang 在 2022 年美国 PyCon 大会上
关于作者
Sophia Yang
Anaconda
Sophia Yang 是 Anaconda, Inc. 的高级数据科学家,她在该公司使用数据科学来促进跨部门的决策制定。她自愿担任 NumFOCUS 的项目孵化器,以帮助开源科学项目发展。她还是多个 Python 开源库(如 condastats、cranlogs、PyPowerUp、intake-stripe 和 intake-salesforce)的作者。她拥有德克萨斯大学奥斯汀分校的统计学硕士学位和教育心理学博士学位。