扫一扫分享
Pyodide是Mozilla的一个独立社区驱动项目,它提供了一个完全在浏览器中运行的完整 Python 数据科学堆栈。它使用编译为WebAssembly的 CPython 3.8 解释器,并在Iodide(一种用于网络的实验性交互式科学计算环境)中使用 Python、NumPy、Pandas、Matplotlib、SciPy 等。
Pyodide项目的所做的事情:通过将成熟活跃的Python科学计算工具栈引入浏览器来满足数据科学计算的需要。Pyodide提供了一个完整的标准Python解释器,它完全在浏览器中运行,可以完全访问浏览器的Web api。
Pyodide 背后的想法是让科学家更好地使用网络。因此,该团队专注于更好地使用 Javascript 的方法,例如将现有的科学库编译为 WebAssembly 并将它们包装在易于使用的 JS API 中。他们提到 Mozilla 的 WebAssembly 向导提供了一个更高级的想法;如果许多科学家更喜欢 Python,那么该团队决定通过编译 Python 科学堆栈以在 WebAssembly 中运行来帮助他们。
如果你直接把这个 WebAssembly 输出加载到浏览器中,那么 Python 解释器就会和在操作系统中直接运行时有很大区别。例如,Web 浏览器没有文件系统(加载和保存文件的位置)。还好 emscripten 提供了一个用 JavaScript 编写的虚拟文件系统供 Python 解释器使用。默认情况下,这些虚拟“文件”会驻留在浏览器选项卡临时占用的内存里,页面关闭时它们就会消失。(emscripten 还为文件系统提供了一种在浏览器的本地存储空间中存储内容的方法,但 Pyodide 不用它。)
通过模拟文件系统和其它标准计算环境中的功能,emscripten 可以只用很少的调整就将现有项目迁移到 Web 浏览器中。(将来我们可能会转而使用 WASI 作为系统仿真层,但是现在 emscripten 是更成熟和完善的选择)。
总而言之,要在浏览器中加载 Pyodide,你需要下载:
用 WebAssembly 编译的 Python 解释器。
这些文件可能会非常大:Python 本身为 21MB,NumPy 为 7MB,依此类推。所幸这些包只需要下载一次,之后它们会存储在浏览器的缓存中。
将所有这些东西组合起来后,Python 解释器就可以访问其标准库中的文件,启动,然后开始运行用户代码了。
手机预览