3

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

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

4

1 回答 1

3

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

但在实践中,轮子最常使用setuptoolswheel包创建,这对 pyodide 有以下挑战:

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

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

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

于 2020-12-07T19:28:01.097 回答