Pyodide is a Python distribution for the browser and Node.js based on WebAssembly
Go to file
Roman Yurchak 4abdff5187 Add test_pywasmcross.py 2018-10-16 15:41:01 +02:00
.circleci Add test_pywasmcross.py 2018-10-16 15:41:01 +02:00
benchmark Make `make benchmark` work again 2018-10-08 13:24:25 -04:00
bin Use bash instead of dash shell on ubuntu 2018-09-25 12:16:53 +02:00
cpython Set #undef HAVE_UTIMENSAT and HAVE_SIGACTION 2018-09-27 11:10:43 +02:00
docs Add a package-loading version of runPython 2018-10-09 18:56:43 -04:00
emsdk Fix patch 2018-10-02 13:23:26 -04:00
lz4 Use LZ4 filesystem compression, using the canonical C implementation 2018-09-19 16:44:54 -04:00
packages Add another subpackage to matplotlib 2018-10-10 14:16:02 -04:00
pyodide_build Add test_pywasmcross.py 2018-10-16 15:41:01 +02:00
six Add documentation to new build tools. 2018-06-22 10:22:00 -04:00
src Merge pull request #217 from mdboom/runpython-async 2018-10-11 10:50:28 +02:00
test Add test_pywasmcross.py 2018-10-16 15:41:01 +02:00
tools Upgrade to emscripten 1.38.12 2018-10-01 18:56:57 -04:00
.clang-format Add linting 2018-06-14 14:19:08 -04:00
.editorconfig Fix #71: Upgrade to Python 3.7 2018-09-06 10:56:33 -04:00
.gitignore Converting tools scripts to a python package 2018-09-20 18:44:30 +02:00
CHANGELOG.md Add some community and contributing guidelines 2018-06-07 15:43:04 -04:00
CODE-OF-CONDUCT.md Update link to recurse center code of conduct 2018-07-18 18:52:18 -04:00
CONTRIBUTING.md Add linting 2018-06-14 14:19:08 -04:00
Dockerfile Address review comments and use the new iodide/pyodide-env:0.3.0 image 2018-10-15 15:28:11 +02:00
LICENSE Initial commit 2018-02-23 14:21:29 -05:00
Makefile Simplify make lint 2018-10-08 13:18:28 -04:00
Makefile.envs Update PATH 2018-10-01 21:16:04 -04:00
README.md Provide a Docker image for building 2018-10-08 15:33:33 -04:00
remove_modules.txt Lots of pandas fixes: 2018-04-24 19:29:54 -04:00
run_docker Rename image pyodide -> pyodide-env 2018-10-09 12:38:51 -04:00
setup.cfg Copy test data in a pytest fixture 2018-08-28 14:42:14 +03:00

README.md

Pyodide

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.

See the demo

Building

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.

make

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.

Testing

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/

Benchmarking

Install the same dependencies as for testing.

make benchmark

Linting

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

make lint