是否可以使用 wasm for pyodide 在浏览器中构建 python 轮?

Is it possible to build python wheel in browser using wasm for pyodide?

我已经在浏览器中为小型 Web 应用程序实现了 pyodide。一些 python 包没有纯 python 轮子,所以我在本地构建然后上传到 CDN。这个 python 轮子可以使用 pyodide 中的 micropip 安装。

所以我的问题是,有没有办法在浏览器中为 pyodide 构建轮子。实施起来会有什么困难? 我很想知道。 谢谢

如果纯 Python 包的轮子由一些 Python 带有元数据的文件组成,打包为 ZIP 文件,您当然可以在 Pyodide 中创建这样的存档。

但在实践中,轮子通常是使用 setuptools or the wheel 包创建的,它对 pyodide 有以下挑战:

  1. setuptools,至少,使用了 WebAssembly VM 不支持的 subprocess 模块,这意味着需要对其进行修补以避免进行子进程调用
  2. setup.py 中的安装要求(以及 pyproject.toml 中的构建要求)意味着可以使用 pip 下载和安装依赖项,这带来了自己的挑战,即,
    • pip/setuptools中子进程的使用
    • 使用标准 python 模块获取包也不起作用(WASM 中没有套接字),除非有人用 Web API pyodide#140
    • 重写其中一些

出于这些原因,micropip 在 pyodide 的上下文中被编写为 pip 的非常基本的替代品。

为经典架构上的 python 甚至 Python 包创建轮子也是一个好主意,因为它们不需要任意代码执行来安装。这意味着车轮更安全、更可靠且安装更快捷。