將WASM輪子發佈到PyPI以便與Pyodide一起使用
Pyodide 314.0版本現在允許將WebAssembly編譯的Python包直接發佈到PyPI並運行時安裝,大大簡化了分發流程。示例包luau-wasm已成功發佈,目前已有28個包採用此新方式。
Pyodide 314.0版本於2026年6月13日發佈,帶來了一個里程碑式的改變:Python包現在可以編譯為WebAssembly(WASM)並作為輪子文件直接發佈到PyPI,然後在瀏覽器中的Pyodide運行時安裝。這一功能由來已久,Pyodide團隊長期以來一直是分佈式Python科學計算棧進入瀏覽器的關鍵橋樑,但過去他們不得不手動構建並託管超過300個包,每新增一個包都需要人工審核,成為社區發展的巨大瓶頸。現在,包開發者可以像發佈Linux、macOS或Windows原生輪子一樣,將Pyodide兼容的WASM輪子發佈到PyPI。支持這一功能的PyPI拉取請求已於4月21日合併。
為了驗證這一新功能,作者Simon Willison創建了一個名為luau-wasm的示例包。Luau是Roblox開發的一種“小巧、快速、可嵌入的編程語言,基於Lua並具有漸進類型系統”,採用MIT許可證發佈。其編譯器用C++編寫。Willison此前已成功將Luau編譯為WebAssembly並在Pyodide中運行,此次他利用Codex和GPT-5.5模型,構建了一個完整的GitHub Actions工作流,實現了從編譯到發佈的全自動化。最終產物是一個276KB的輪子文件,用户只需幾行代碼即可在Pyodide中安裝並運行Luau腳本。他還部署了一個HTML演示頁面,該頁面加載Pyodide、安裝luau-wasm並提供一個交互式界面,用户可以在瀏覽器中嘗試運行Luau代碼,示例包括斐波那契數列計算等。
此外,Willison通過BigQuery查詢了PyPI的公開數據集,發現已有28個包使用了新的pyemscripten_202*_wasm32標籤。這些包涵蓋多種用途,包括uuid7-rs、imgui-bundle、pydantic_core、typst等。隨着這一機制的普及,未來預計會有更多Python包支持在瀏覽器中直接運行,進一步推動WebAssembly生態的發展。