logoalt Hacker News

Pyodide: a Python distribution based on WebAssembly

109 pointsby toshlast Friday at 5:34 PM25 commentsview on HN

Comments

simonwtoday at 4:36 AM

Pyodide is one of the hidden gems of the Python ecosystem. It's SO good at what it does, and it's nearly 8 years old now so it's pretty mature.

I love using Pyodide to build web UIs for trying out new Python libraries. Here's one I built a few weeks ago to exercise my pure-Python SQLite AST parser, for example: https://tools.simonwillison.net/sqlite-ast

It's also pretty easy[1] to get C or Rust libraries that have Python bindings compiled to a WebAssembly wheel that Pyodide can then load.

Here's a bit of a nutty example - the new Monty Python-like sandbox library (written in Rust) compiled to WASM and then loaded in Pyodide in the browser: https://simonw.github.io/research/monty-wasm-pyodide/pyodide...

[1] OK, Claude Code knows how to do it.

show 2 replies
fzumsteintoday at 6:46 AM

Pyodide powers xlwings Lite, a free Excel add-in that you can install from Excel’s add-in store with a single click. It outperforms Microsoft’s official Python in Excel solution in every coceivable way: price, privacy, speed, can install packages, can access the internet, can access local files, doesn’t have a usage quota, can automate Excel and create native UDFs. See https://lite.xlwings.org

devsdatoday at 4:36 AM

There's also xeus-cpp which is cpp based on wasm. Xeus-cpp and pyodide are the backends for Jupyterlite [1] kernels in browser.

It's actually a very good way to teach coding in python/c++(11, 17 or even 23), explore language features or your own library within browser and allow students to execute code by hosting just some static html pages and some assets without any backend.

1. https://jupyter.org/try-jupyter/lab/

QuadmasterXLIItoday at 4:29 AM

It works surprisingly well in terms of writing python for native execution, and then trying to share on the web and having it Just Work TM. Unfortunately, when I want python it's because I want numpy, scipy and friends, and once you bring them on board pyodide load times are long. As an example comparison: a face turning octahedron puzzle in python + pyodide, loads in 10 seconds https://cubes.hgreer.com/fto.html . Meanwhile, a megaminx puzzle in javascript (statically generated by python) loads in 200 ms https://cubes.hgreer.com/ssg/output.html

ianberdintoday at 4:59 AM

Yea, I even built online ide based on Pyodide. Insane peace of software. You can try here: playcode.io/python

williamsteintoday at 6:56 AM

I tried to make a version of this using Zig once, but ran out of steam: https://cowasm.org/

show 1 reply
jasiektoday at 5:54 AM

I've used it to put together a browser app to program walkie-talkies: https://codeplug.org

yjftsjthsd-htoday at 6:01 AM

That is very cool. Has anyone made a nice beginner's learning environment out of it? Seems like it would solve some of the extra friction that makes it hard to get started.

show 2 replies
yawnxyztoday at 3:21 AM

no but it works great in conjunction with observable and d3js for pretty interactives!

jacob019today at 3:06 AM

Anyone using it with nodejs to make a sandbox for code agents?

show 3 replies
shevy-javatoday at 7:07 AM

WebAssembly will reach a breakthrough in the same year as GNU Hurd will dominate, together with the Desktop-Linux-of-the-year.

anarhackisttoday at 3:00 AM

[dead]