The Python scientific stack, compiled to WebAssembly
Clone or download
Failed to load latest commit information.
.circleci Fix typo Nov 7, 2018
CLAPACK Check checksum Oct 31, 2018
benchmark Make `make benchmark` work again Oct 8, 2018
bin Use bash instead of dash shell on ubuntu Sep 25, 2018
cpython Make cProfile work Nov 8, 2018
docs Update Nov 8, 2018
emsdk Fix patch Oct 2, 2018
lz4 Use LZ4 filesystem compression, using the canonical C implementation Sep 19, 2018
packages Back out sys.implementation.cache_tag = None Nov 9, 2018
pyodide_build Fix handling of bytecode files Nov 8, 2018
six Add documentation to new build tools. Jun 22, 2018
src Bump version: 0.1.12 → 0.2.0 Nov 15, 2018
test Merge pull request #249 from mdboom/bytecode Nov 12, 2018
tools Upgrade to emscripten 1.38.12 Oct 1, 2018
.bumpversion.cfg Bump version: 0.1.12 → 0.2.0 Nov 15, 2018
.clang-format Remove keys from .clang-format Nov 13, 2018
.editorconfig Fix #71: Upgrade to Python 3.7 Sep 6, 2018
.gitignore CLAPACK setup Oct 31, 2018 Add some community and contributing guidelines Jun 7, 2018 Update link to recurse center code of conduct Jul 18, 2018 Add linting Jun 14, 2018
Dockerfile CLAPACK setup Oct 31, 2018
LICENSE Initial commit Feb 23, 2018
Makefile Add .bumpversion.cfg Nov 12, 2018
Makefile.envs test_io segfaults but without producing any messages Oct 3, 2018 Trivial change to ping CI Nov 7, 2018
remove_modules.txt Lots of pandas fixes: Apr 24, 2018
run_docker Increment iodide/pyodide-env image to 0.3.0 also in run_docker Oct 16, 2018
setup.cfg Rename to dryrun, add docstring and doctest Oct 23, 2018


Build Status

The Python scientific stack, compiled to WebAssembly.

It provides transparent conversion of objects between Javascript and Python. When inside a browser, this means Python has full access to the Web APIs.

While closely related to the iodide project, Pyodide may be used standalone in any context where you want to run Python inside a web browser.

For more information, see the demo and the documentation.


Building is easiest on Linux. For other platforms, we recommend using the Docker image (described below) to build Pyodide.

Make sure the prerequisites for emsdk are installed. Pyodide will build a custom, patched version of emsdk, so there is no need to build it yourself prior.

Additional build prerequisites are:

  • A working native compiler toolchain, enough to build CPython.
  • A native Python 3.7 to run the build scripts.
  • PyYAML
  • lessc to compile less to css.
  • uglifyjs to minify Javascript builds.
  • ccache (optional) recommended for much faster rebuilds.


Using Docker

We provide a Debian-based Docker image on Docker Hub with the dependencies already installed to make it easier to build Pyodide.

  1. Install Docker

  2. From a git checkout of Pyodide, run ./run_docker

  3. cd /src

  4. Run make to build.

You can edit the files in your source checkout on your host machine, and then repeatedly run make inside the Docker environment to test your changes.


Install the following dependencies into the default Python installation:

pip install pytest selenium pytest-instafail

Install geckodriver and chromedriver somewhere on your PATH.

pytest test/


Install the same dependencies as for testing.

make benchmark


Python is linted with flake8. C and Javascript are linted with clang-format.

make lint