【问题标题】:How to use sqlalchemy via pyodide如何通过 pyodide 使用 sqlalchemy
【发布时间】:2022-01-15 17:30:27
【问题描述】:

我知道使用Pyodide 我可以:

A) 通过 PyPI 中的 micropip.whl 文件的 URL 安装纯 Python 包

例子:

        pyodide.runPythonAsync(`
          import micropip
          await micropip.install('pyicloud')
        `);

B) 如果包是用 Pyodide 构建的并且存在于 Pyodide 存储库中,则加载带有本机扩展的包:

例子:

        pyodide.loadPackage(
          [
            "pandas",
          ]
        );

但是,您如何处理既不是 A) 也不是 B) 的依赖关系的情况?

示例:my_new_library 需要 sqlmodel,而 sqlalchemy 需要具有本机扩展但不在 Pyodide 的预构建包列表中。

因此,如果我尝试使用 micropip 安装 my_new_library.whl,我会在 JavaScript 控制台上收到以下错误:

    pyodide.asm.js:14 Uncaught (in promise) PythonError: Traceback (most recent call last):
      File "/lib/python3.9/asyncio/futures.py", line 201, in result
        raise self._exception
      File "/lib/python3.9/asyncio/tasks.py", line 258, in __step
        result = coro.throw(exc)
      File "/lib/python3.9/site-packages/_pyodide/_base.py", line 494, in eval_code_async
        await CodeRunner(
      File "/lib/python3.9/site-packages/_pyodide/_base.py", line 347, in run_async
        await coroutine
      File "<exec>", line 3, in <module>
      File "/lib/python3.9/asyncio/futures.py", line 284, in __await__
        yield self  # This tells Task to wait for completion.
      File "/lib/python3.9/asyncio/tasks.py", line 328, in __wakeup
        future.result()
      File "/lib/python3.9/asyncio/futures.py", line 201, in result
        raise self._exception
      File "/lib/python3.9/asyncio/tasks.py", line 256, in __step
        result = coro.send(None)
      File "/lib/python3.9/site-packages/micropip/_micropip.py", line 191, in install
        raise ValueError(
    ValueError: Couldn't find a pure Python 3 wheel for: 'sqlalchemy<1.5.0,>=1.4.17'
    
        at new_error (pyodide.asm.js:14)
        at pyodide.asm.wasm:0xe6eb0
        at pyodide.asm.wasm:0xeacfd
        at method_call_trampoline (pyodide.asm.js:14)
        at pyodide.asm.wasm:0x121318
        at pyodide.asm.wasm:0x209acf
        at pyodide.asm.wasm:0x160f8b
        at pyodide.asm.wasm:0x121865
        at pyodide.asm.wasm:0x12195f
        at pyodide.asm.wasm:0x121a2d

【问题讨论】:

    标签: python sqlalchemy webassembly pyodide


    【解决方案1】:

    看起来它现在应该可以工作了。我明白了,它已添加到官方支持的内置包中。

    https://github.com/pyodide/pyodide/tree/main/packages

    【讨论】:

    • 是的,事实上我在 Pyodide 团队的帮助下创建了 Pull Request。感谢您添加答案。
    猜你喜欢
    • 2021-02-23
    • 2021-10-29
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    • 1970-01-01
    • 2016-01-23
    • 2014-07-27
    相关资源
    最近更新 更多