Можно ли создать колесо python в браузере, используя wasm для pyodide?

#python #pyodide

#python #pyodide

Вопрос:

Я внедрил pyodide в браузере для небольших веб-приложений. В некоторых пакетах python нет чистого колеса python, поэтому я создал локально, а затем загрузил в CDN. Это колесо python можно установить с помощью micropip в pyodide.

Итак, мои вопросы, есть ли способ создать колесо в браузере для pyodide. В чем будет сложность для реализации этого? Мне любопытно узнать. Спасибо

Ответ №1:

В той мере, в какой колесо чистых пакетов Python состоит из некоторых файлов Python с метаданными, упакованных в ZIP-файл, вы, безусловно, можете создать такой архив в Pyodide.

Однако на практике колеса чаще всего создаются с помощью setuptools или пакета wheel, который имеет следующие проблемы для pyodide:

  1. по крайней мере, setuptools использует subprocess модуль, который не поддерживается в WebAssembly VM, что означает, что его необходимо будет исправить, чтобы избежать вызовов подпроцессов
  2. требования к установке setup.py (и требования к сборке pyproject.toml ) подразумевают, что можно загружать и устанавливать зависимости с помощью pip, что создает свои собственные проблемы, а именно,
    • использование подпроцесса в pip / setuptools
    • выборка пакетов со стандартными модулями python также не работает (в WASM нет сокетов), если не переписать некоторые из них с помощью Web API pyodide # 140

По этой причине micropip был написан как очень элементарная альтернатива pip в контексте pyodide.

Также неплохо создавать колеса для чистых пакетов python даже для Python на классических архитектурах, поскольку они не требуют выполнения произвольного кода для установки. Это означает, что колеса безопаснее, надежнее и быстрее устанавливаются.